UI自动化之selenium
627 字
3 分钟
UI自动化之selenium
用例结果缩写
.:passed,通过F:failed,失败(用例执行时报错)E:error,出错(fixture 执行报错)s:skipped,跳过X:xpassed,预期外的通过(不符合预期x:xfailed,预期内的失败(符合预期)
入门案例:
import timefrom selenium import webdriverfrom selenium.webdriver.common.by import Byfrom selenium.webdriver.chrome.service import Service
path = r"D:\Program Files\Python\chromedriver.exe"ser= Service(executable_path=path)driver = webdriver.Chrome(service=ser)driver.get("https://www.baidu.com")
time.sleep(2)driver.quit()定位元素:
1 标签
定位方式 id
举例:<input type= "text" id= "name" />
定位方式 name
举例:<input type= "text" name= "pwd" />
定位方式 class_name
举例:<input class= "top" />
定位方式 标签tag_name(基本不用)
举例:<input />
定位方式 link_text
举例:<a>黑马程序员</a>
driver.find_element(By.LINK_TEST,"登录").click()
定位方式 partial_link_text
举例:<a>学IT来黑马程序员,IT黑马</a>
2定位方式 CSS ⭐⭐⭐
ID 选择器
- 适用条件:标签元素带有 ID 属性
- 书写格式:
value="#id属性值"
类选择器
- 适用条件:标签元素带有 class 属性
- 书写格式:
value=".class属性值"
元素选择器
- 书写格式:
value="标签名"
属性选择器
- 属性定位:
value="[属性名='属性值' (and 属性名1='属性值1' and 2='2')]"
value="[属性名='属性值'][ 属性名1='属性值1' ] [2='2']" - 层级定位:如果使用 CSS 的时候,有复杂层级关系,
value 值使用:
标签名#ID 属性值 > 标签名 > 标签名.class 属性值使用示例:
from selenium.webdriver.common.by import By# ID选择器示例driver.find_element(By.CSS_SELECTOR, "#username")# 类选择器示例driver.find_element(By.CSS_SELECTOR, ".login-input")# 元素选择器示例driver.find_element(By.CSS_SELECTOR, "input")# 属性选择器示例driver.find_element(By.CSS_SELECTOR, "[type='password']")定位方式 XPath⭐⭐⭐
针对 XML 格式;
1. 绝对路径
- 定义:从最外层元素到指定元素之间所有经过的元素层级的路径,层级关系依赖强,不建议使用
- 写法:以
/开头,从 html 根节点开始,使用/分隔元素层级 - 示例:
/html/body/div/fieldset/form/p[1]/input
2. 相对路径
定义:从目标定位元素的任意层级的上级元素开始到目标元素所经过的层级的路径
写法:以 // 开始,后续每个层级都使用 / 来分隔
示例://p[3]/input
注意:[index]从 1 开始
3.相对路径+属性定位 ⭐⭐⭐
原理:利用元素的属性来定位
- 单属性语法:
- 指定标签:
//标签名[@属性名="属性值"] - 任意标签
*://*[@属性名="属性值"]
- 指定标签:
- 多属性联合语法:
//*[@属性名1="属性值" and @属性名2="属性值"]
注意事项:标签名可以使用 * 来代替任意标签
4.相对路径+文本定位* ⭐⭐⭐
//*[test()="登录"]
Frame 切换
driver.switch_to.frame()
支持与分享
如果这篇文章对你有帮助,欢迎分享给更多人或赞助支持!
UI自动化之selenium
https://firefly.cuteleaf.cn/posts/编程学习/软件测试/ui自动化之selenium/