0


Selenium教程:一文了解Selenium的元素查找

注:本文内容基于selenium 3.141.0

Selenium的元素查找指的是使用Selenium WebDriver库中提供的方法来定位和操作网页上的各种元素,如文本框、按钮、下拉框、链接等。通过元素查找,可以在自动化测试中模拟用户操作,比如输入文本、点击按钮、选择下拉选项等。

Selenium提供了多种元素查找的方法,可以根据元素的特征和位置来进行定位。常用的元素查找方法包括:

  1. 通过ID查找元素
  2. 通过名称查找元素
  3. 通过类名查找元素
  4. 通过标签名查找元素
  5. 通过链接文本查找元素
  6. 通过XPath表达式查找元素
  7. 通过CSS选择器查找元素

使用这些方法,可以根据元素的唯一特征或者在页面中的相对位置来定位元素,从而实现对元素的操作。例如,可以通过

find_element_by_id

find_element_by_name

find_element_by_xpath

等方法来查找单个元素,或者通过

find_elements_by_name

find_elements_by_xpath

等方法来查找多个符合条件的元素。


1.通过ID查找元素:

element = driver.find_element_by_id("element_id") 

2.通过名称查找元素:

element = driver.find_element_by_name("element_name") 

3.通过类名查找元素:

element = driver.find_element_by_class_name("element_class") 

4.通过标签名查找元素:

element = driver.find_element_by_tag_name("element_tag") 

5.通过链接文本查找元素:

element = driver.find_element_by_link_text("link_text") 

6.通过部分链接文本查找元素:

element = driver.find_element_by_partial_link_text("partial_link_text") 

7.通过XPath表达式查找元素:

element = driver.find_element_by_xpath("xpath_expression") 

XPath(XML Path Language)是一种用于在XML文档中定位元素的查询语言。在Selenium中,XPath常用于定位网页上的元素。

XPath语法包含以下主要部分:

  1. 节点选择器:- nodename:选择指定节点名的所有节点。- *:选择所有节点。- @attribute:选择具有指定属性的所有节点。
  2. 路径表达式:- /:从根节点开始选择。- //:选择匹配的任何位置的节点。- .:选择当前节点。- ..:选择当前节点的父节点。
  3. 谓语(Predicate):- [expression]:用于筛选节点,只选择满足条件的节点。- 可以使用运算符(如=, !=, <, >, contains()等)和逻辑运算符(如and, or, not)进行条件判断。
  4. 轴(Axis):- ancestor:选择所有祖先节点。- parent:选择父节点。- child:选择子节点。- following-sibling:选择当前节点之后的所有同级节点。- preceding-sibling:选择当前节点之前的所有同级节点。

以下是一些XPath示例:

  • //div:选择文档中的所有<div>元素。
  • //input[@id='username']:选择具有id属性为'username'的所有<input>元素。
  • //a[contains(@href, 'example.com')]:选择链接的href属性中包含'example.com'的所有<a>元素。
  • //table//tr[position()>2]:选择表格中第3行及之后的所有<tr>元素。

8.通过CSS选择器查找元素:

element = driver.find_element_by_css_selector("css_selector")

以下是八种常见的元素定位方式的优缺点:

  1. 通过ID定位元素- 优点:唯一性高,速度快。- 缺点:部分网页可能没有id属性,不适用于所有情况。
  2. 通过名称定位元素- 优点:简单易用。- 缺点:名称不唯一时定位困难。
  3. 通过类名定位元素- 优点:CSS类通常在页面上是唯一的。- 缺点:对于包含多个类名的元素定位可能不够精确。
  4. 通过标签名定位元素- 优点:查找速度较快。- 缺点:标签名通常不是唯一的。
  5. 通过链接文本定位元素- 优点:可以定位到链接元素。- 缺点:对于链接文本较长或包含特殊字符时不方便定位。
  6. 通过部分链接文本定位元素- 优点:可以模糊匹配链接文本。- 缺点:可能匹配到多个元素,定位不够精确。
  7. 通过XPath表达式定位元素- 优点:灵活强大,可以定位任何元素。- 缺点:XPath相对复杂,定位表达式较长。
  8. 通过CSS选择器定位元素- 优点:定位速度快,支持丰富的选择器语法。- 缺点:选择器语法可能较复杂,不够直观。

根据实际情况和页面结构的不同,选择合适的定位方式很重要。通常建议优先使用ID和类名进行定位,如果无法唯一定位,则可考虑使用XPath或CSS选择器。


以下是一个使用Selenium在百度网站搜索框中输入关键词并点击搜索按钮的完整代码示例:

from selenium import webdriver
from selenium.webdriver.common.keys import Keys

# 启动浏览器
driver = webdriver.Chrome()

# 打开百度网站
driver.get("https://www.baidu.com")

# 定位搜索框并输入关键词
search_box = driver.find_element_by_id("kw")  # 百度搜索框的id为"kw"
search_box.send_keys("Selenium WebDriver")

# 模拟按下回车键进行搜索
search_box.send_keys(Keys.RETURN)

# 或者点击搜索按钮进行搜索(可选)
# search_button = driver.find_element_by_id("su")  # 百度搜索按钮的id为"su"
# search_button.click()

# 等待搜索结果加载
driver.implicitly_wait(10)  # 等待最多10秒钟,可根据实际情况调整

# 输出当前页面标题和URL
print("当前页面标题:", driver.title)
print("当前页面URL:", driver.current_url)

# 关闭浏览器
driver.quit()

在这个示例中,我们使用Selenium打开百度网站,在搜索框中输入关键词"Selenium WebDriver",然后模拟按下回车键进行搜索。你也可以选择点击搜索按钮进行搜索。最后,输出当前页面的标题和URL,并关闭浏览器。


本文转载自: https://blog.csdn.net/weixin_40025666/article/details/136649451
版权归原作者 旦莫 所有, 如有侵权,请联系我们删除。

“Selenium教程:一文了解Selenium的元素查找”的评论:

还没有评论