使用 By 类在 Python Selenium 中查找元素
By 类是 Selenium 中用于查找元素的定位器类,常用的定位方式有:
- 通过 ID 查找元素:By.ID
- 通过 Name 查找元素:By.NAME
- 通过 Class Name 查找元素:By.CLASS_NAME
- 通过 Tag Name 查找元素:By.TAG_NAME
- 通过 Link Text 查找元素:By.LINK_TEXT
- 通过 Partial Link Text 查找元素:By.PARTIAL_LINK_TEXT
- 通过 CSS Selector 查找元素:By.CSS_SELECTOR
- 通过 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 定位搜索结果的第一个链接。最后输出了链接文本内容和链接地址。
相关文章