Python Selenium根据条件定位元素

分享知识  传递快乐

 

在一个页面中有很多不同的策略可以定位一个元素,你可以选择最合适的方法去查找元素。

 

定位单个元素

  • 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')

 

 

 

 

 

 

 

—————————
如有不足请留言指正
相互学习,共同进步

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

旷野历程

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值