使用 By 类在 Python Selenium 中查找元素

2023-04-17 00:00:00 python 元素 查找

By 类是 Selenium 中用于查找元素的定位器类,常用的定位方式有:

  1. 通过 ID 查找元素:By.ID
  2. 通过 Name 查找元素:By.NAME
  3. 通过 Class Name 查找元素:By.CLASS_NAME
  4. 通过 Tag Name 查找元素:By.TAG_NAME
  5. 通过 Link Text 查找元素:By.LINK_TEXT
  6. 通过 Partial Link Text 查找元素:By.PARTIAL_LINK_TEXT
  7. 通过 CSS Selector 查找元素:By.CSS_SELECTOR
  8. 通过 XPath 查找元素:By.XPATH

其中,CSS Selector 和 XPath 是比较强大的定位方式,可以通过元素的属性、文本内容等综合判断元素位置。下面我们以举例说明如何使用 By 类进行元素定位:

from selenium import webdriver
from selenium.webdriver.common.by import By

# 使用 Chrome 浏览器
driver = webdriver.Chrome()

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

# 通过 ID 定位搜索框和搜索按钮
search_box = driver.find_element(By.ID, "kw")
search_button = driver.find_element(By.ID, "su")

# 输入文本内容并点击搜索按钮
search_box.send_keys("pidancode.com")
search_button.click()

# 通过 XPath 定位搜索结果的第一个链接
first_link = driver.find_element(By.XPATH, "//div[@id='content_left']//h3[@class='t']/a")

# 输出链接文本内容和链接地址
print(first_link.text)
print(first_link.get_attribute("href"))

# 关闭浏览器
driver.quit()

上述代码中,我们使用了 By.ID 和 By.XPATH 两种方式定位元素。通过 ID 定位搜索框和搜索按钮,通过 XPath 定位搜索结果的第一个链接。最后输出了链接文本内容和链接地址。

如果我们需要使用字符串作为例子,可以修改成如下代码:

from selenium import webdriver
from selenium.webdriver.common.by import By

# 使用 Chrome 浏览器
driver = webdriver.Chrome()

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

# 通过 Name 定位搜索框和搜索按钮
search_box = driver.find_element(By.NAME, "wd")
search_button = driver.find_element(By.ID, "su")

# 输入文本内容并点击搜索按钮
search_box.send_keys("皮蛋编程")
search_button.click()

# 通过 Link Text 定位搜索结果的第一个链接
first_link = driver.find_element(By.LINK_TEXT, "皮蛋编程 - 专注于 Python 爬虫教程分享")

# 输出链接文本内容和链接地址
print(first_link.text)
print(first_link.get_attribute("href"))

# 关闭浏览器
driver.quit()

上述代码中,我们使用了 By.NAME 和 By.LINK_TEXT 两种方式定位元素,通过 Name 定位搜索框和搜索按钮,通过 Link Text 定位搜索结果的第一个链接。最后输出了链接文本内容和链接地址。

相关文章