【UI自动化】Selenium库中使用By类元素定位方法

使用By类,首先需要在Python中导入该模块:

from selenium.webdriver.common.by import By

1.通过元素的ID属性来定位

driver.find_element(By.ID,'kw')

如下图,我们需要定位百度的输入框。首先选中定位工具,然后选中输入框。我们可以看到该元素id的值为:"kw"

2.通过元素的NAME属性来定位

driver.find_element(By.NAME,'b2')

3.通过CLASS_NAME元素定位

driver.find_element(By.CLASS_NAME,'select-inner')

如下图,class的值为:"select-inner"

 4.通过TAG_NAME元素定位

driver.find_element(By.TAG_NAME,'tag_name属性的值')

5.根据文本内容进行定位

driver.find_element(By.LINK_TEXT,'link_text属性的值')

这里既可以使用LINK_TEXT也可以使用PARTIAL_LINK_TEXT

a)使用LINK_TEXT,代码则是:

driver.find_element(By.LINK_TEXT, "selenium - 百度翻译")

b)使用PARTIAL_LINK_TEXT,代码书写如下:

driver.find_element(By.PARTIAL_LINK_TEXT, "selenium")

6.根据部分文本内容进行模糊匹配

driver.find_element(By.PARTIAl_LINK_TEXT,'partial_link_text属性的值'

7.通过CSS选择器定位元素

driver.find_element(By.CSS_SELECTOR, "span:contains('#main-outer > div > div > div.translate-wrap > div.trans-operation-wrapper > div.trans-operation.clearfix > a.language-btn.select-from-language > span > span")

如果是Chrome浏览器,可以直接右键选择复制selector。这里需要注意的是Safari浏览器不支持复制CSS元素

8.通过XPATH定位

driver.find_element(By.XPATH,'XPATH属性的值')

XPATH的使用比较的灵活,我先列举两种常规的

a)相对路径(推荐

       优点: 相对路径通常更短、更简洁,易于阅读和维护。它们以当前元素为起点,通过指定相对于当前元素位置的路径来定位其他元素

        缺点:相对路径可能因为页面结构的改变而失效,尤其是在页面布局发生变化时。如果页面结构发生较大改动,相对路径可能需要进行调整

driver.find_element(By.XPATH, "//input[@class='bg s_btn']")

b)绝对路径

        优点:绝对路径对于定位元素来说是最准确的,即使页面结构发生变化,它也可以始终准确定位到目标元素

        缺点:绝对路径通常较长且较复杂,可读性较差。如果页面结构发生轻微变化(例如添加了一个新的父级元素),绝对路径可能需要进行相应的调整

driver.find_element(By.XPATH, "/html/body/div/div/div/div[2]/form/span/input")

        总的来说,相对路径在大多数情况下是更好的选择,因为它们更简洁、易读,并且能够适应轻微的页面结构变化。但是,如果你需要更高的准确性和稳定性,或者页面结构变动较大,那么绝对路径可能更适合

相对路径拓展

定位一个属性

driver.find_element(By.XPATH,'//标签名[@属性名="属性的值"]')

定位多个属性

driver.find_element(By.XPATH,'//标签名[@属性名="属性的值" and @属性名="属性的值"]')

定位父子属性

driver.find_element(By.XPATH,'//标签名[@属性名="属性的值"]/下一级标签名/下一级标签名')

通过文本内容定位

driver.find_element_by_xpath('//标签名[contains(text(),"文本内容")]')

  • 9
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值