分享知识 传递快乐
在一个页面中有很多不同的策略可以定位一个元素,你可以选择最合适的方法去查找元素。
定位单个元素
- find_element_by_id:通过ID定位元素
- find_element_by_name:通过Name定位元素
- find_element_by_xpath:通过XPath定位元素
- find_element_by_link_text:通过链接文本获取超链接
- find_element_by_partial_link_text:通过链接文本获取超链接
- find_element_by_tag_name:通过标签名定位元素
- find_element_by_class_name:通过Class name 定位元素
- find_element_by_css_selector:通过CSS选择器定位元素
当你指定一个元素时,会在页面中查找指定的元素,如果匹配会被匹配并返回。如果找不到任何元素,会抛出 NoSuchElementException 异常。
定位多个元素
- find_elements_by_name
- find_elements_by_xpath
- find_elements_by_link_text
- find_elements_by_partial_link_text
- find_elements_by_tag_name
- find_elements_by_class_name
- find_elements_by_css_selector
以上方法会返回一个list列表,当查找不到标签时会返回一个空列表,从而避免发生异常。
除了上述的公共方法,下面还有两个私有方法,在你查找也页面元素的时候也许有用: find_element 和 find_elements 。
示例1:
from selenium.webdriver.common.by import By
driver.find_element(By.XPATH, '//button[text()="Some text"]')
driver.find_elements(By.XPATH, '//button')
下面是 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"
Selenium 常用定位元素操作说明:
第一种方式:
# 根据id来查找某个元素。
driver.find_element_by_id('id')
# 根据类名来查找某个元素。
driver.find_element_by_class_name('className')
# 根据name属性值查找某个元素。
driver.find_element_by_name('name')
# 根据标签名来查找某个元素。
driver.find_element_by_tag_name('tagName')
# 根据xpath语法查找某个元素。
driver.find_element_by_xpath('//div')
# 根据css选择器选取元素。
driver.find_element_by_css_selector('//div')
第二种方式:使用第二种方式需要先导入By类
from selenium.webdriver.common.by import By
# 根据id来查找某个元素
driver.find_element(By.ID, 'id')
# 根据类名来查找某个元素
driver.find_element(By.CLASS_NAME, 'className')
# 根据name属性值查找某个元素
driver.find_element(By.NAME, 'name')
# 根据标签名来查找某个元素
driver.find_element(By.TAG_NAME, 'div')
# 根据xpath语法查找某个元素
driver.find_element(By.XPATH, '//div')
# 根据css选择器选取元素
driver.find_element(By.CSS_SELECTOR, '//div')
—————————
如有不足请留言指正
相互学习,共同进步