自动化测试_webdriver的基本操作
1.webdriver元素定位分类
- id、name、class_name:元素属性定位
- tag_name:元素标签名称
- link_text、partial_link_text:超链接定位
2.id定位操作实例
(1)id定位方法:find_element_by_id()
(2)id定位实现:
# 导包
from selenium import webdriver
import time
# 实例化谷歌浏览器
driver=webdriver.Chrome()
# 打开注册A.html
url=r"D:\__MyFiles__\春招\阶段7-自动化测试开发 (2)\注册A.html"
driver.get(url)
# 调用id定位方法
input1=driver.find_element_by_id("userA")
# 使用send_keys()方法发送数据
input1.send_keys("admin")
# 暂停1秒
time.sleep(1)
# 关闭浏览器
driver.quit()
3.name定位操作实例
(1)定位方法:find_element_by_name()
(2)name定位实现:
# 导包
from selenium import webdriver
import time
# 实例化谷歌浏览器
driver=webdriver.Chrome()
# 打开注册A.html
url=r"D:\__MyFiles__\春招\阶段7-自动化测试开发 (2)\注册A.html"
driver.get(url)
# 调用name定位方法
input2=driver.find_element_by_name("passwordA")
# 使用send_keys()方法发送数据
input2.send_keys("123456")
# 暂停1秒
time.sleep(1)
# 关闭浏览器
driver.quit()
4.class_name定位操作实例
(1)class_name定位方法:find_element_by_class_name()
(2)class_name定位实现:
# 导包
from selenium import webdriver
import time
# 实例化谷歌浏览器
driver=webdriver.Chrome()
# 打开注册A.html
url=r"D:\__MyFiles__\春招\阶段7-自动化测试开发 (2)\注册A.html"
driver.get(url)
# 调用class_name定位方法
input3=driver.find_element_by_class_name("telA")
# 使用send_keys()方法发送数据
input3.send_keys("1234567890")
# 暂停1秒
time.sleep(1)
# 关闭浏览器
driver.quit()
5.tag_name定位操作实例
(1)tag_name定位方法:find_element_by_tag_name()
(2)tag_name定位实现:
注意:此处应使用find_elements_by_tag_name(),因为返回的定位元素格式为列表,而列表格式的读取需要指定下标(下标从0开始)
# 导包
from selenium import webdriver
import time
# 实例化谷歌浏览器
driver=webdriver.Chrome()
# 打开注册A.html
url=r"D:\__MyFiles__\春招\阶段7-自动化测试开发 (2)\注册A.html"
driver.get(url)
# 调用tag_name定位方法
input3=driver.find_elements_by_tag_name("input")
# 使用send_keys()方法发送数据
input3[3].send_keys("1234@163.com")
# 暂停1秒
time.sleep(1)
# 关闭浏览器
driver.quit()
6.link_text定位操作实例
(1)find_element_by_link_text()
(2)link_text定位实现:
# 导包
from selenium import webdriver
import time
# 实例化谷歌浏览器
driver=webdriver.Chrome()
# 打开注册A.html
url=r"D:\__MyFiles__\春招\阶段7-自动化测试开发 (2)\注册A.html"
driver.get(url)
# 调用link_text定位方法:全称
link1=driver.find_element_by_link_text("AA 百度 网站")
# click点击
link1.click()
# 暂停1秒
time.sleep(1)
# 关闭浏览器
driver.quit()
7.partial_link_text定位操作实例
(1)find_element_by_partial_link_text()
(2)partial_link_text定位实现:
# 导包
from selenium import webdriver
import time
# 实例化谷歌浏览器
driver=webdriver.Chrome()
# 打开注册A.html
url=r"D:\__MyFiles__\春招\阶段7-自动化测试开发 (2)\注册A.html"
driver.get(url)
# 调用partial_link_text定位方法:不用全称
link1=driver.find_element_by_partial_link_text("AA")
# click点击
link1.click()
# 暂停1秒
time.sleep(1)
# 关闭浏览器
driver.quit()
8.xpath元素定位
- 根据元素自身特征定位://标签(可以用表示)[@属性=“属性值”]
(1)class://(星号)[@class=“header”]
(2)id://(星号)[@id=“app”]
(3)其他://标签(可以用星号表示)[@属性=“属性值”]
(4)多个属性://标签(可以用星号表示)[@属性1=“属性值”][@属性2=“属性值”]
或者://标签(可以用星号表示)[@属性1=“属性值” and @属性2=“属性值”]
(5)属性值部分匹配://*(星号)[contains(@属性,“部分属性值”)] - 根据元素层级关系定位:
(1)上下级关系:
A:后代关系(可以跨级):祖先//后代
B:父子关系:父元素/子元素
(2)同级关系:
A:哥哥
a:弟弟/preceding-sibling::哥哥[n]
1)n从1开始表示正数
2)last()表示倒数第一
b:弟弟/preceding-sibling::哥哥们
B:弟弟
a:哥哥/following-sibling::弟弟[n]
1)n从1开始表示正数
2)last()表示倒数第一
b:哥哥/following-sibling::弟弟们
9.css元素定位 - 根据元素特征进行定位
(1)元素标签
如:div定义当前页面所有div元素
(2)元素属性
A:根据id定位(#id值)
B:根据class定位
1).class值
2)多个class:.class1.class2
C:根据其他属性定位的语法:[属性=“属性值”]
D:根据多个属性符合定位:[属性1=’'属性值"][属性2="属性值”] - 根据元素层级关系进行定位
(1)上下级关系
A:后代关系:祖先元素 后代元素
B:父子关系:父元素>子元素
C:指定子元素:
1)子元素:nth-child(n) #注意n从1开始
2)子元素:nth-last-child(n) #倒数
(2)同级关系
A:哥哥定位弟弟:哥哥+弟弟
B:哥哥定位弟弟们:哥哥~弟弟 - 复合应用
A:父子加属性 - 验证表达式
A:控制台+F12,elements标签下,按下ctrl+F,打开元素搜索框
B:控制台+F12,console,输入$$(“css表达式”)
测试报告生成-allure - 生成报告缓存文件:–allure=tmp/my_allure_results
- 打开测试报告:allure serve tmp/my_allure_results