Selenium系列教程 - 元素定位(下)

156 阅读1分钟

自动化测试中的核心是元素定位,只有在定位到对象的基础上,才可以对对象进行操作。

在一个页面中有很多种方法可以定位到元素。在项目中,你可以选择最合适的方法去定位到元素,selenium提供了以下方法:

定位单个元素(匹配第一个符合条件的元素)

find_element_by_id
find_element_by_name
find_element_by_tag_name
find_element_by_class_name
find_element_by_link_text
find_element_by_partial_link_text
find_element_by_xpath
find_element_by_css_selector

定位一组元素(返回一个list列表)

find_elements_by_id
find_elements_by_name
find_elements_by_tag_name
find_elements_by_class_name
find_elements_by_link_text
find_elements_by_partial_link_text
find_elements_by_xpath
find_elements_by_css_selector

除了上面的公共方法,还有两个私有方法,他们是find_element和find_elements 。

用法示例:

from selenium.webdriver.common.by import By
from selenium import webdriver
driver = webdriver.Chrome()
driver.find_element(By.ID, 'kw')
driver.find_elements(By.TAG_NAME, 'div')

下面是By类的可用属性:

ID = "id"
XPATH = "xpath"
LINK_TEXT = "link text"
PARTIAL_LINK_TEXT = "partial link text"
NAME = "name"
TAG_NAME = "tag name"
CLASS_NAME = "class name"
CSS_SELECTOR = "css selector"

因此上面的 driver.find_element(By.ID, 'kw') 也可以直接写成 driver.find_element("id", 'kw')


在这里插入图片描述


接下来,我们用上面的方法来试试吧。以下是百度输入框元素截图:

在这里插入图片描述

通过id定位

driver.find_element_by_id("kw")

通过name定位

driver.find_element_by_name("wd")

通过class name定位

driver.find_element_by_class_name("s_ipt")

通过xpath定位

driver.find_element_by_xpath("//input[@id='kw']")

通过css selector定位

driver.find_element_by_css_selector("#kw")

通过link text定位百度首页的设置

driver.find_element_by_link_text("设置")

通过partial link text定位百度首页的设置(通过部分文本内容定位)

driver.find_element_by_partial_link_text("设置")

通过tag name定位

页面元素如下:

<html>
 <body>
  <h1>Welcome</h1>
  <p>Site content goes here.</p>
</body>
<html>
driver.find_element_by_tag_name("h1")

在这里插入图片描述


在这里插入图片描述