【Python】selenium 的find_element居然可以通过下一个节点去做点击!

我们在使用BeautiflSoup 的时候会获取节点,可以获取到节点下的其他的节点。

例如:

title=html2.find('div',{'class':'xq-head'}).find("h2").text

BeautiflSoup 的优势是结构比较清晰,可以很方便得通过一层层地查找,可以快速找到节点信息。

而selenium的优势是可以实现自动化交互,例如可以点击网页元素,可以模拟鼠标移动等等,这些是BeautiflSoup 所没有的。但是BeautiflSoup 在获取节点信息上则更为方便。

但是其实,在selenium里,也可以用find_element 里,也可以使用通过元素的下一个节点去获取元素。
在这里插入图片描述

在Selenium中,如果你想通过一个元素的下一个节点去获取该元素,可以使用以下几种方法:

1. 多层递进式:

可以点找到一个一级元素,然后往它的下级再继续查找。

例如下面的写法,可以找到CLASS_NAME节点下,第一个 a 节点并点击它。

在这里插入图片描述

代码:

driver.find_element(By.CLASS_NAME, 'p_level1Box').find_element(By.TAG_NAME, 'a').click()

如果想要点击下一个元素,可以这样写:

driver.find_element(By.CLASS_NAME, 'p_level1Box').find_elements(By.TAG_NAME, 'li')[1].click()

这里适用于,用xpath 或者css_selector去点击某个元素执行不了,或者它来解析多层次节点的内容,例如获取href 或者text,可以不用额外使用BeautiflSoup ,就能办到了!

2. 节点式:

  1. XPath轴

    • 使用following-sibling轴来选取当前节点之后的所有同级节点。
      例如,如果你想获取某个节点之后的第一个同级节点,可以使用如下XPath表达式:

      driver.find_element_by_xpath("//div[@id='s-top-left']/following-sibling::*[1]")
      

      这里的[1]表示选择第一个同级后续节点。
      在这里插入图片描述
      例如上面是获取绿色框节点下,并列的节点的文字。

  2. CSS选择器

    • 使用+选择器来选取当前节点紧随其后的同级节点,或者使用~选择器来选取当前节点之后的所有同级节点。例如:
      driver.find_element_by_css_selector("div#s-top-left + div")
      
      或者
      driver.find_element_by_css_selector("div#s-top-left ~ div")
      
      +选择器会选取紧随其后的同级节点,而~选择器会选取所有后续的同级节点。

效果跟xpath同在

  1. XPath其他位置
    • 你也可以使用XPath的位置函数来选取特定的后续节点。例如,如果你想选取某个节点之后的第二个同级节点,可以使用:
      driver.find_element_by_xpath("//div[@id='s-top-left']/following-sibling::div[2]")
      
      这里的[2]表示选择第二个同级后续节点。

这些方法可以帮助你根据一个元素的下一个节点去定位和获取该元素。

在实际使用中,你可以根据具体情况选择最适合的方法。

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值