selenium自动化(下)
2023-12-15 00:27:12
自动化测试定位策略
简介
Web自动化测试定位策略是指在自动化测试脚本中用于准确定位和操作Web页面元素的方法和规则。
选择正确的定位策略对于成功执行自动化测试非常重要,因为它直接影响到测试脚本的稳定性和可维护性。
定位方式
通用 Web 定位方式
- 通过八大定位方式进行定位。
定位策略 | 描述 |
---|---|
class name | 通过 class 属性定位元素 |
css selector | 通过匹配 css selector 定位元素 |
id | 通过 id 属性匹配元素 |
name | 通过 name 属性定位元素 |
link text | 通过?<a>text</a> ?标签中间的 text 文本定位元素 |
partial link text | 通过?<a>text</a> ?标签中间的 text 文本的部分内容定位元素 |
tag name | 通过 tag 名称定位元素 |
xpath | 通过 xpath 表达式匹配元素 |
选择定位器通用原则
- 与研发约定的属性优先(class属性:?
[name='locate']
)- 在与开发团队约定的属性上进行定位,以确保一致性和可维护性。
-
身份属性 id,name(web 定位)
- 使用?
id
?和?name
?属性进行定位,这些属性通常是唯一的,是首选的定位方法。
- 使用?
-
复杂场景使用组合定位:
- 使用?
xpath
?和?css
?选择器来处理复杂的定位需求。 - 处理属性动态变化:通过 xpath
- 重复元素属性(id,text,class)
- 父子定位:通过定位父元素,然后在其内部查找子元素。
- 使用?
- js定位 - 使用 js 注入来定位元素,特别适用于处理动态或特殊交互的元素。
特殊场景
弹框-alert()
- 场景
- web 页面 alert 弹框
- 解决:
- web 需要使用?
driver.switchTo().alert()
?处理
- web 需要使用?
日期控件
-
场景:
<input>
标签组合的下拉框无法定位<input>
标签组合的日期控件无法定位
- 解决:
- 面对这些元素,我们可以引入 JS 注入技术来解决问题。
文件上传
- 场景:
- input 标签文件上传
- 解决:
- input 标签直接使用 send_keys()方法
总结
选择合适的定位策略取决于页面结构、元素特性和项目约定。在Web自动化测试中,综合运用这些策略可以确保测试脚本的稳定性和可维护性,从而提高自动化测试的效率和可靠性。
熟练掌握不同的定位方法,并根据实际情况灵活应用,是自动化测试工程师的重要技能之一
Selenium 无头模式
无头模式介绍
无头模式是 Selenium 的一个功能,它允许你在不显示实际浏览器窗口的情况下运行自动化测试或爬取网页数据,无头模式常用于以下情况
- 节省资源:在无头模式下,不需要显示浏览器窗口,这可以节省系统资源和内存,特别是当你需要运行大规模的自动化任务时。
- 增加性能,无头模式可以更快地执行自动化任务,因为它不需要渲染页面或处理图形用户界面。
- 隐身浏览:无头模式可以更隐秘地进行网页爬取或测试,因为不会显示任何浏览器窗口。
无头模式的使用
- 导入必要的库
from selenium import webdriver from selenium.webdriver.chrome.options import Options
-
配置无头模式选项(以 Chrome 浏览器为例)
chrome_options = Options() chrome_options.add_argument("--headless") # 启用无头模式
chrome_options.add_argument()
可以传入其他选项 -?--start-maximized
:启动浏览器时最大化窗口。 -?--window-size=width,height
:设置浏览器窗口的宽度和高度。 -
创建 WebDriver 实例:
driver = webdriver.Chrome(options=chrome_options)
- 执行操作
现在可以使用?
driver
?对象来执行各种操作,如打开网页、查找元素、点击按钮等
5. 清理资源driver.get("https://ceshiren.com/") page_source = driver.page_source print(page_source)
记得在使用完 WebDriver后关闭它,以释放资源
driver.quit()
文章来源:https://blog.csdn.net/sinat_26916241/article/details/134922339
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!