Selenium元素定位方法总结

Selenium可以驱动浏览器完成各种操作,比如模拟点击等。要想操作一个元素,首先应该识别这个元素。人有各种的特征(属性),我们可以通过其特征找到人,如通过身份证号、姓名、家庭住址。同理,一个元素会有各种的特征(属性),我们可以通过这个属性找到这对象。

目录

一、元素的概念

(一)什么是元素?

(二)查看元素信息

二、元素定位方法

(一)根据id定位

(二)根据name定位

(三)通过class name定位

(四)根据tag定位

(五)通过link text定位

(六)通过partial link text定位

(七)根据XPath定位

2.7.1绝对路径

2.7.2相对路径

(八)通过css selector定位

2.8.1 id选择器

2.8.2 class选择器

2.8.3 标签选择器

2.8.4 属性选择器

2.8.5 直接在浏览器复制

(九)定位方法的使用

2.9.1 定位方式选择

2.9.2 find_element和find_elements方法

三、元素定位的另一种写法

一、元素的概念

(一)什么是元素?

元素:由标签头 + 标签尾 + 标签头和标签尾包括的文本内容;

元素的信息就是指元素的标签名及元素的属性;

元素的层级结构就是指元素之间相互嵌套的层级结构;

元素定位最终就是通过元素的信息或者元素的层级结构来进行元素定位;

(二)查看元素信息

在谷歌浏览器中,选中元素,右键点击“检查”,即可在“Elements"中查看元素信息。

以百度首页搜索框为例,查看元素信息如下图所示:

image-20220511102134911

image-20220510192728208

二、元素定位方法

webdriver 提供了一系列的对象定位方法,常用的有以下8种:

定位一个元素 定位多个元素 含义
find_element_by_id find_elements_by_id 通过元素id定位
find_element_by_name find_elements_by_name 通过元素name定位
find_element_by_xpath find_elements_by_xpath 通过xpath表达式定位
find_element_by_link_text find_elements_by_link_text 通过完整超链接定位
find_element_by_partial_link_text find_elements_by_partial_link_text 通过部分链接定位
find_element_by_tag_name find_elements_by_tag_name 通过标签定位
find_element_by_class_name find_elements_by_class_name 通过类名进行定位
find_element_by_css_selector find_elements_by_css_selector 通过css选择器进行定位

我们创建浏览器对象并访问百度首页,以百度首页为例,讲解如何定位元素。

from selenium import webdriver

web = webdriver.Chrome()
web.get(r'https://www.baidu.com') 

(一)根据id定位

HTML当中,id属性是唯一标识一个元素的属性,因此在selenium当中,通过id来进行元素的定位也作为首选。

百度搜索框的元素如图所示:

image-20220510192728208

百度搜索框元素html结构:

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

元素定位:

element = web.find_element_by_id("kw") 

(二)根据name定位

HTML当中,name属性和id属性的功能基本相同,只是name属性并不是唯一的,如果遇到没有id标签的时候,我们可以考虑通过name标签来进行定位。

百度搜索框元素html结构:

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

元素定位:

element = web.find_element_by_name("wd") 

(三)通过class name定位

我们也可以基于class属性来定位元素。通常当我们看到有多个并列的元素如list表单,class用的都是共用同一个。

百度搜索框元素html结构:

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

元素定位:

element = web.find_element
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值