python selenium模拟登录然后操作

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys

import time


#配置信息
#配置代码执行完后浏览器不自动关闭
options = webdriver.ChromeOptions()
options.add_experimental_option('detach', True)

url="http://*****"
driver = webdriver.Chrome(options=options)
#打开网页
driver.get(url)
#等待5秒
driver.implicitly_wait(5)
# 最大化窗口
driver.maximize_window()

#获得元素,比填写账号与密码
#账号 我是使用XPATH方法获取元素。这种方法适用于页面不会变的
driver.find_element(By.XPATH,"/html/body/div[1]/div[2]/div/form/div[2]/div/div/div/input").send_keys("账号")
#密码
driver.find_element(By.XPATH,"/html/body/div[1]/div[2]/div/form/div[3]/div/div/div/input").send_keys("密码")


#登录:
#点击
driver.find_element(By.XPATH,'/html/body/div[1]/div[2]/div/form/div[5]/div/button').click()

# 停顿10秒然后操作,以防止页面还没有加载完成 
# 假如需要操作的页面为iframe中页面话,需要切换至iframe
# driver.switch_to.frame('iframe的id')
time.sleep(10)
driver.find_element(By.XPATH,'//*[@id="XXX"]/div/div/div[1]/div/div/div/textarea').send_keys("内容")


8种元素定位方式(各举一例):

from selenium import webdriver
from selenium.webdriver.common.by import By
driver = webdriver.Chrome()
# id
driver.find_element(By.ID, "username")
# name
driver.find_element(By.NAME, "keyword")
# class name
driver.find_element(By.CLASS_NAME, "login_btn")
# tag_name
driver.find_element(By.TAG_NAME, "select")
# link_text
driver.find_element(By.LINK_TEXT, "进入商城购物")
# partial_link_text
driver.find_element(By.PARTIAL_LINK_TEXT, "人资")
# xpath
driver.find_element(By.XPATH, "/html/body/div[3]/div[2]/div[3]/div/div[1]/a/img")
# css_selector
driver.find_element(By.CSS_SELECTOR, '[value="1"]')

优缺点:
id 和 name:
优:易于定位元素,大多数时其属性值是唯一的
缺:很多元素没有id 和 name属性
class_name 和 tag_name:
优:几乎所有元素都有class_name 和 tag_name
缺:class 和 tag的值往往不是唯一,很难精准的找到一个元素。
link_text 和 partial_link_text:
特点:只能用于标签
区分:
link_text:用于一些a标签名字比较短的。
partial_link_text:用于一些a标签名字很长,我们可以选取一部分特殊的词去定位。
xpath 和 css_selector:
特点:xpath 和 css_selector几乎可以用于所有页面元素定位,都可以直接生成。但有的时候直接生成的也不是100%管用,有些情况还是需要手工去写xpath 和 css_selector。
For css_selector:可以采用任意属性来定位元素,只需要在属性的两边加一对中括号即可。

猜你喜欢

转载自blog.csdn.net/qq_38881740/article/details/130391483