自动化测试的核心技术就是元素定位,我们要想对元素进行操作,必须要找到这个元素的所在位置,webdriver中有很多进行元素定位的方法:
1、xpath定位
xpath定位有很多种定位策略:
>使用元素的绝对路径
>使用元素的相对路径
>使用元素属性定位
>使用层级和属性结合定位(使用上级属性定位)
>使用层级和属性结合定位(使用逻辑运算符定位)
方法:find_element_by_xpath()
Discuz论坛登录业务:
from time import sleep # 导入时间模块
from selenium import webdriver # 从selenium模块中导入webdriver子模块
url = "http://192.168.152.128/upload/forum.php" # 定义url地址
driver = webdriver.Chrome() # 定义一个对象
driver.get(url=url) # 访问url
sleep(6) # 思考时间6s
# 根据相对路径定位用户名输入框
driver.find_element_by_xpath('//*[@id="ls_username"]').send_keys('admin')
sleep(6)
# 根据绝对路径定位密码输入框
driver.find_element_by_xpath('/html/body/div[5]/div/div[1]/form/div/div/table/tbody/tr[2]/td[2]/input').send_keys(
'123456')
# 根据相对路径定位登录按钮
driver.find_element_by_xpath('//*[@id="lsform"]/div/div/table/tbody/tr[2]/td[3]/button/em').click()
sleep(6)
driver.quit()
操作步骤:
①打开Discuz论坛首页,点击右键/检查,或者点击F12,进入调试界面
②点击元素检查按钮,然后点击网站中用户名输入框,查看元素源代码
③点击调试界面的源代码,右键/复制/复制Xpath(相对路径)或者复制完整Xpath(绝对路径)
④将复制的Xpath放到 driver.find_element_by_xpath()中
⑤ 依次点击密码输入框、登录按钮,然后将路径全部复制到 driver.find_element_by_xpath()中
2、id定位
HTML文档中的id是唯一的,id定位是查找元素的最佳方法,方法是:
driver.find_element_by_id()和driver.find_elements_by_id
Discuz论坛登录业务:
from time import sleep # 导入时间模块
from selenium import webdriver # 从selenium模块中导入webdriver子模块
url = "http://192.168.152.128/upload/for