经验分享-Python+Selenium元素定位

一、 前言

Web应用以及包含超文本标记语言(HTML)、层叠样式表(CSS)、JS脚本的WEB页面,基于用户的操作(例如点击提交按钮),浏览器向WEB服务器发送请求,WEB服务器响应请求,返回给浏览器HTML及相关的JS、CSS、图片等资源,浏览器使用这些资源生成WEB页面,其中包含WEB各种视觉元素,例如文本框、按钮、标签、图标、复选框、下拉框、图片等,这些视觉元素或控件都被Selenium称为页面元素(webelements)。

想要让Selenium执行我们想要的操作,首先必须让Selenium识别需要操作的元素,就像人通过眼睛去识别一样,Selenium通过定位元素的方法去识别页面元素,可以通过ID、

name、class属性定位,以及Xpth和CSS选择器定位,或者直接通过文本进行定位。

二、 使用谷歌检查页面元素(根据自己的使用习惯选择浏览器)

(1) 单击鼠标右键,选择“检查”。

(2) 需要使用Xpth或CSS选择器时,可以在Elements窗口,Ctrl+F打开搜索框,在搜索框中输入Xpth或CSS表达式,匹配的元素会高亮显示(黄色部分),如果有多个匹配,搜索框的右侧会显示匹配数量。
在这里插入图片描述

三、 元素定位

就如人工操作时,输入查询条件,然后点击【查询】按钮,前提是首先要知道这个是搜索框,这个是【查询】按钮一样,Selenium在执行功能操作之前,也要先识别这些元素。下面是Selenium提供的8种find_element_by 方法,用于定位页面元素。
<strong>方法</strong>
<strong>简单说明</strong>
<strong>find_element_by_id()</strong>
通过页面元素的id来定位
<strong>find_element_by_name()</strong>
通过页面元素的name来定位
<strong>find_element_by_class_name()</strong>
通过页面元素的class名来定位
<strong>find_element_by_tag_name()</strong>
通过页面元素的tag name(标签名称)来定位
例如:find_element_by_tag_name(<strong>'input'</strong>)
<strong>find_element_by_xpath()</strong>
通过Xpth来定位
<strong>find_element_by_css_selector()</strong>
通过CSS选择器来定位
例如:find_element_by_css_selector(<strong>'#zzk_q'</strong>)
<strong>find_element_by_link_text()</strong>
通过元素标签对之间的文本来定位
例如:find_element_by_link_text(<strong>'</strong><strong>园子'</strong>)
<strong>find_element_by_partial_link_text()</strong>
通过元素标签对之间的部分文本来定位
例如:find_element_by_partial_li

(1) 如果加s(find_elements_by),就是返回一个列表(一组元素),不加的话就是返回一个元素,如果找不到元素就会抛出NoSuchElementException异常。

(2) 也可以用find_element(By.ID, ‘’ )这种写法,使用这种方式要先导入By模块

fromselenium.webdriver.common.by import By

(3) 要使用CSS选择器,可以参考jquery 语法关于选择器的那部分
注:另外比较特殊的是class属性,class属性有空格时,空格并不是间隔,而是代表这个标签有多个class名,定位的时候使用第一个名称,或者不同名称之间用.分开就行了。
如:淘宝首页这个标签

,可以用div.promo 或 div.promo.J_Promo 或 div.promo.J_Promo.tb-loading 定位
在这里插入图片描述
加入我们,了解更多,642830685,群。领取最新软件测试大厂面试资料和Python自动化、接口、框架搭建学习资料!技术大牛解惑答疑,同行一起交流

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值