【自动化测试篇 | Python】Selenium安装及八大元素定位方法

目录

一、selenium自动化测试工具简介

二、selenium安装教程

环境要求

安装步骤

验证安装

注意事项

三、八大元素定位

1)ID定位:

2)Name定位:

3)Class Name定位:

4)Tag Name定位:

5)Link Text定位:

6)Partial Link Text定位:

7)CSS Selector定位:

8)XPath定位:

XPath介绍

完整XPath(绝对XPath)

区别总结


一、selenium自动化测试工具简介

Selenium是一个非常流行的自动化测试工具,它支持多种编程语言,如Python、Java等,用于自动化Web应用的测试过程。在使用Selenium进行自动化测试时,元素定位是非常关键的一步,因为我们需要确保能准确地找到页面上的元素,才能对其执行各种操作(如点击、输入文字等)。Selenium提供了多种定位元素的策略。

二、selenium安装教程

环境要求

  • Python:确保你的系统中已经安装了Python。Selenium支持Python 3.6及以上版本。
  • pip:Python的包管理工具,通常与Python一起安装。

安装步骤

  1. 安装Selenium库打开命令行(在Windows上是CMD或PowerShell,在MacOS或Linux上是Terminal),输入以下命令来安装Selenium:
pip install selenium
  1. 下载WebDriverSelenium通过使用WebDriver与浏览器进行交互。根据你使用的浏览器类型(如Chrome、Firefox等),需要下载相应的WebDriver。
    • 对于Chrome,访问ChromeDriver - WebDriver for Chrome,下载与你的Chrome浏览器版本相匹配的ChromeDriver。
    • 对于Firefox,访问geckodriver Releases,下载最新版本的GeckoDriver。
    • 确保下载后的WebDriver可执行文件放置在系统的PATH中,或者你可以在代码中直接指定其路径。

验证安装

完成安装后,你可以编写一个简单的脚本来测试Selenium是否安装成功。

​
from selenium import webdriver

# 指定WebDriver的路径,如果已经添加到PATH,则不需要

# driver_path = '/path/to/chromedriver' # Chrome的示例

# driver = webdriver.Chrome(executable_path=driver_path)

# 如果WebDriver已经添加到PATH,可以直接这样启动

driver = webdriver.Chrome() # Chrome的示例

# 打开一个网页

driver.get('http://www.google.com')

# 打印网页标题,确认脚本运行成功

print(driver.title)

# 关闭浏览器

driver.quit()

​

如果脚本能够成功运行,并打印出网页的标题,那么恭喜你,Selenium已经成功安装并配置好了。

注意事项

  • 确保下载的WebDriver版本与你的浏览器版本兼容。
  • 在使用Selenium进行Web自动化测试时,可能还需要安装其他依赖包,具体取决于你的测试需求。
  • Selenium的API文档和社区资源非常丰富,遇到问题时不妨查阅相关文档或搜索解决方案。

三、八大元素定位

1)ID定位:

通过元素的ID属性进行定位。ID通常是唯一的,是最快和最可靠的一种定位方式

element = driver.find_element_by_id("element_id")

2)Name定位:

通过元素的name属性进行定位。如果页面中有多个元素使用了相同的name,则返回第一个元素。

element = driver.find_element_by_name("element_name")

3)Class Name定位:

通过元素的class属性进行定位。如果有多个元素具有相同的class,则返回第一个元素。

element = driver.find_element_by_class_name("element_class")

4)Tag Name定位:

通过元素的标签名进行定位。如果页面中有多个相同标签的元素,此方法将返回第一个元素。

element = driver.find_element_by_tag_name("element_tag")

5)Link Text定位:

专门用于定位<a>标签的文本链接。必须匹配链接的完整文本。

element = driver.find_element_by_link_text("完整链接文本")

6)Partial Link Text定位:

也是用于定位<a>标签的文本链接,但只需提供部分链接文本即可。

element = driver.find_element_by_partial_link_text("部分链接文本")

partial_link_text方法就是link_text的模糊方法,比如上方link_text是查找品牌,那么partial_link_text就是"品"或者“牌"

element = driver.find_element_by_partial_link_text("部分链接文本")

7)CSS Selector定位:

通过CSS选择器来定位元素。这是一种非常强大的定位方式,可以通过各种CSS属性来定位元素。

element = driver.find_element_by_css_selector("css_selector")

8)XPath定位:

通过XPath表达式来定位元素。XPath是一种在XML文档中查找信息的语言,由于HTML是XML的一种实现,因此也可以用来在HTML文档中查找元素。

这里需要注意在使用谷歌浏览器(Google Chrome)进行网页元素定位时,尤其是在使用开发者工具(DevTools)查看HTML结构并复制元素的XPath时,你可能会遇到两种不同类型的XPath:一种简称为“XPath”,另一种称为“完整XPath”或“绝对XPath”。这两种XPath虽然都能用于定位页面上的元素,但它们之间存在一些关键的区别。

XPath介绍

通常所说的“XPath”,指的是一种灵活的查询语言,用于在XML文档中通过定义特定的路径表达式来选择节点。在HTML文档(一种特殊的XML文档)中,XPath同样可以用来定位元素。这种类型的XPath通常是相对路径,它不从根节点开始,而是从某个特定的中间节点开始,基于元素的特定属性、位置或者特定的结构特征来定位元素。相对XPath更加灵活和鲁棒,因为它不依赖于页面的完整结构,当页面布局发生变化时,相对XPath有更好的适应性。

完整XPath(绝对XPath)

完整XPath,也称为绝对XPath,是从HTML文档的根节点(即html标签)开始,一层一层向下直到目标元素的完整路径。它以单斜杠(/)开头,表示从根节点开始的绝对路径,每一级都精确指定,直到找到目标元素。绝对XPath的缺点在于,它非常依赖于页面的具体结构。如果页面布局有所改变(即使是很小的改变),绝对XPath可能就会失效,因为路径中的任何一个节点的改变都会导致XPath不再准确。

区别总结
  • 灵活性与鲁棒性:相对XPath提供了更高的灵活性和鲁棒性,更适合自动化测试和Web爬虫等场景,因为它不容易因为页面结构的轻微变动而失效。
  • 易用性:绝对XPath更直观,容易理解,特别是对于初学者来说,可以快速地从浏览器中复制出来,但它的适应性和可维护性较差。
  • 性能:对于大型和复杂的文档,相对XPath可能会提供更好的性能,因为它避免了从根节点开始的全文档扫描。

在实际使用中,推荐优先考虑使用相对XPath,因为它在多数情况下能提供更好的稳定性和灵活性。然而,根据具体情况和需求的不同,选择最合适的XPath策略是很重要的。

希望看完这篇文章能给正在学习自动化测试的您带来收货!另外,在参加高职组职业院校技能大赛软件测试的同学们可以参考我的另外一个专栏~,软测的省赛、国赛资源都会在这个专栏中后续更新。

全国职业院校技能大赛-软件测试大赛备赛参考资料

  • 22
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

旺仔Sec

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值