📌  相关文章
📜  driver.find_element_by_xpath - Python (1)

📅  最后修改于: 2023-12-03 15:00:32.191000             🧑  作者: Mango

Python中的driver.find_element_by_xpath

Python中的Selenium是一种用于自动化Web应用程序测试的工具。其中的driver对象可以模拟用户与浏览器的交互,便于程序自动化地完成各种Web操作。

在使用driver对象时,我们常常需要找到特定的网页元素进行操作,此时就可以使用driver.find_element_by_xpath方法来通过xpath表达式匹配网页元素。

语法

find_element_by_xpath(xpath)

  • xpath:要查找的元素xpath表达式。
返回值

find_element_by_xpath方法会返回一个WebElement对象,该对象用于与找到的网页元素进行交互。

示例
from selenium import webdriver

# 创建一个Chrome浏览器对象
driver = webdriver.Chrome()

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

# 找到搜索框并输入内容
input_elem = driver.find_element_by_xpath("//input[@id='kw']")
input_elem.send_keys("Python")

# 找到搜索按钮并点击
submit_elem = driver.find_element_by_xpath("//input[@type='submit']")
submit_elem.click()

# 关闭浏览器
driver.close()

在以上示例中,我们先创建了一个Chrome浏览器对象,然后打开了百度首页。接着使用driver.find_element_by_xpath方法分别找到搜索框和搜索按钮,并完成输入和点击操作。最后关闭了浏览器。

xpath表达式

xpath是一种用于在XML文档中查找信息的语言,常常被用于Web页面元素的定位。以下是xpath常用的几种表达式模式:

  • 标签名://tagname,例如//span表示查找所有的标签。
  • 属性://*[@attribute],例如//*[@id]表示查找所有存在id属性的元素。
  • 属性匹配://*[@attribute="value"],例如//*[@class="title"]表示查找class属性为"title"的元素。
  • 属性子串匹配://*[contains(@attribute, "value")],例如//*[contains(@class, "title")]表示查找class属性中包含"title"的元素。
  • 层级://tagname/subtagname,例如//ul/li表示查找所有的
  • 标签,前提是它们是
      元素的子元素。
  • 索引:(//tagname)[index],例如(//div)[2]表示查找第二个
    标签。
  • 逻辑运算符:[position()=index][last()][not(@attribute)]等,例如//(div[@class="wrap"])[last()]表示查找class属性为"wrap"的最后一个
    标签。
注意事项
  • 如果find_element_by_xpath方法在当前页面找不到对应的元素,将会抛出NoSuchElementException异常。
  • xpath表达式的编写需要谨慎,容易被网页结构的变化所影响,建议使用较为稳定的属性选择器来定位元素。