selenium 元素定位(2)

概述

selenium 4引入了相对定位器(以前称为友好定位器)。当为所需元素构建定位器并不容易时,这些定位器很有帮助,但很容易在空间上描述元素相对于具有易于构建定位器的元素的位置。

方式

above
locate_with(by: By, using: str).above(element_or_locator:Union[WebElement, Dict] = None)

如果某一元素不容易定位,但是该元素下方的元素容易定位,那么可以先访问该元素下方的元素,再通过above函数访问该元素。

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.relative_locator import locate_with

driver = webdriver.Chrome()
driver.get("http://www.example.com")
# 定位到标签名为p的元素
element = driver.find_element(By.TAG_NAME, "p")
# 相对定位到该元素上面标签名为h1的元素
locator = locate_with(By.TAG_NAME, "h1").above(element)
# 根据相对定位来查找元素
element = driver.find_element(locator)
below
locate_with(by: By, using: str).below(element_or_locator:Union[WebElement, Dict] = None)

如果某一元素不容易定位,但是该元素上面的元素容易定位,那么可以先访问该元素上面的元素,再通过below函数访问该元素。

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.relative_locator import locate_with

driver = webdriver.Chrome()
driver.get("http://www.example.com")
element = driver.find_element(By.TAG_NAME, "h1")
# 相对定位到element下面的标签为p元素
locator = locate_with(By.TAG_NAME, "p").below(element)
element = driver.find_element(locator)
left
locate_with(by: By, using: str).to_left_of(element_or_locator:Union[WebElement, Dict] = None)

如果某一元素不容易定位,但是该元素右边的元素容易定位,那么可以先访问该元素右面的元素,再通过to_left_of函数访问该元素。

right
locate_with(by: By, using: str).to_right_of(element_or_locator:Union[WebElement, Dict] = None)

如果某一元素不容易定位,但是该元素左边的元素容易定位,那么可以先访问该元素左面的元素,再通过to_right_of函数访问该元素。

near
locate_with(by: By, using: str).near(element_or_locator:Union[WebElement, Dict] = None)

如果相对定位不明显,或者根据窗口大小而变化,可以使用 near 方法来识别距离元素最多50px的元素。

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.relative_locator import locate_with

driver = webdriver.Chrome()
driver.get("http://www.example.com")
element = driver.find_element(By.TAG_NAME, "h1")
# 相对定位到element附近(可以是上下左右)的标签名为p的元素
locator = locate_with(By.TAG_NAME, "p").near(element)
element = driver.find_element(locator)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

不负韶华ღ

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

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

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

打赏作者

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

抵扣说明:

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

余额充值