Selenium-By定位及如何确定元素唯一

什么是By定位?

  1. 有时候我们不知道用哪种方法来定位元素,By定位可以根据实际场景设定定位策略;
  2. By定位和之前学习的8种定位方法差不多,只不过是写法上的不同;
  3. 使用By定位,首先需要导入By类;from selenium.webdriver.common.by import By
  4. 语法如下:
定位方式定位单个元素
id定位find_element(By.ID,"id")
class定位find_element(By.CLASS_NAME,"class")
name定位find_element(By.NAME,"name")
tag定位find_element(By.TAG_NAME,"tag")
xPath定位find_element(By.XPATH,"xPath")
Link定位find_element(By.LINK_TEXT,"text")
PartialLink定位find_element(By.PARTIAL_LINK_TEXT,"partialText")
CSS选择器定位find_element(By.CSS_SELECTOR,"css")

以百度输入框为例,通过id、name定位代码如下:

from selenium import webdriver
from selenium.webdriver.common.by import  By
import time

# 打开浏览器
driver = webdriver.Chrome()
# 打开百度页面
driver.get("https://www.baidu.com")
time.sleep(2)
# 通过id进行定位
driver.find_element(By.ID,"kw").send_keys("python")
# 通过name进行定位
driver.find_element(By.NAME,"wd").send_keys("python")
driver.quit()

如果觉得导入By类麻烦,又想把8种写法统一起来,有办法么,当然,我们接下来介绍简化版的:

By.ID = 'id'

By.NAME = 'name'

By.LINK_TEXT = 'link text'

By.PARTIAL_LINK_TEXT = 'partial link text'

By.TAGE_NAME = 'tag name'

By.CLASS_NAME = 'class name'

By.CSS_SELECTOR = 'css selector'

By.XPATH = 'xpath'

简化版定位代码如下:

from selenium import webdriver
import time

driver = webdriver.Chrome()
# 打开百度页面
driver.get("https://www.baidu.com")
time.sleep(2)
# 通过id进行定位
driver.find_element("id","kw").send_keys("python")
# 通过name进行定位
driver.find_element("name","wd").send_keys("python")
driver.quit()

定位元素的唯一性

我们在写自动化脚本过程中,会遇到因为元素不是唯一导致定位元素失败的场景,那么我们可以先确定此元素是否唯一,再来定位元素。

以百度搜索框为例:

1.浏览器打开开发者模式(F12),定位到百度搜索框上,发现源码如下:

<input type="text" class="s_ipt" name="wd" id="kw" maxlength="100" autocomplete="off">

2.在css定位中讲过,class="s_ipt"、id="kw",css定位可以写成input.s_ipt,input#kw,

那么快捷键Crtl+F,在开发者工具左下角搜索框输入input.s_ipt 或 input#kw,回车进行搜索:

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值