跳转至

Selenium Python 版中寻找元素

约 260 个字 28 行代码 预计阅读时间 1 分钟

假定已创建基于 selenium.webdriver.remote.webdriver.WebDriver 类的 driver 实例。

以下的

  • Byselenium.webdriver.common.by.By
  • WebElementselenium.webdriver.remote.webelement.WebElement

方法 1

查找单个元素

driver.find_element(by=By.ID, value=None)

通过 by 中定义的查询方式,以及 value 中定义的查询条件,寻找第一个符合要求的页面元素。如找到,返回表示页面元素的 WebElement 类;否则,抛出 NoSuchElementException 异常。

by 的可取值如下:

1
2
3
4
5
6
7
8
By.ID = "id"                                # 使用元素 ID 定位,默认值
By.XPATH = "xpath"                          # 使用 XPath 定位
By.LINK_TEXT = "link text"                  # 使用链接文本定位
By.PARTIAL_LINK_TEXT = "partial link text"  # 使用链接文本的一部分定位
By.NAME = "name"                            # 使用元素的 name 属性定位
By.TAG_NAME = "tag name"                    # 使用元素标签名定位
By.CLASS_NAME = "class name"                # 使用元素 class 定位
By.CSS_SELECTOR = "css selector"            # 使用 CSS 选择器定位

查找多个元素

driver.find_elements(by=By.ID, value=None)

通过 by 中定义的查询方式,以及 value 中定义的查询条件,寻找所有符合要求的页面元素。则返回由表示页面元素的 WebElement 类组成的列表,如未找到,返回空列表。

方法 2 (官方已不推荐使用)

查找单个元素

driver.find_element_by_xx(yy)

相当于 driver.find_element(by=By.XX, value=yy)。如找到,返回表示页面元素的 WebElement 类;否则,抛出 NoSuchElementException 异常。

1
2
3
4
5
6
7
8
driver.find_element_by_id(val)
driver.find_element_by_xpath(val)
driver.find_element_by_link_text(val)
driver.find_element_by_partial_link_text(val)
driver.find_element_by_name(val)
driver.find_element_by_tag_name(val)
driver.find_element_by_class_name(val)
driver.find_element_by_css_selector(val)

查找多个元素

driver.find_elements_by_xx(yy)

相当于 driver.find_elements(by=By.XX, value=yy)。返回由表示页面元素的 WebElement 类组成的列表,如未找到,返回空列表。

1
2
3
4
5
6
7
8
driver.find_elements_by_id(val)
driver.find_elements_by_xpath(val)
driver.find_elements_by_link_text(val)
driver.find_elements_by_partial_link_text(val)
driver.find_elements_by_name(val)
driver.find_elements_by_tag_name(val)
driver.find_elements_by_class_name(val)
driver.find_elements_by_css_selector(val)

另见

XPath