selenium自动化之元素定位方法
在使用selenium webdriver进行元素定位时,有8种基本元素定位方法(注意:并非只有8种,总共来说,有16种)。 分别介绍如下: 1.name定位 (注意:必须确保name属性值在当前html页面中是唯一的) 页面源码如下: "<button name="btnK">Google Search</button>" 当我们要用name属性来定位这个按钮元素并点击它时,代码如下: driver.find_element_by_name('btnK').click() 2.id定位 (注意:必须确保id属性值在当前html页面中是唯一的) 页面源码如下: "<button id="gbqfba">Google Search</button>" 当我们要用id属性来定位这个按钮元素并点击它时,代码如下: driver.find_element_by_id('gbqfba').click() 3.tagNamed定位 (注意:必须确保标签在当前html页面中是唯一的,标签名在html页面中一般不唯一,所以定位单个元素时很少用,定位一组元素时用) 页面源码如下: "<button>Google Search</button>" 当我们要用tagName属性来定位这个按钮元素并点击它时,代码如下: driver.find_element_by_tag_name('button').click() 4.className定位 (注意:必须确保className属性值在当前html页面中是唯一的) 一:class属性值只有一个 页面源码如下: "<button class="gbqfba">Google Search</button>" 当我们要用className属性来定位这个按钮元素并点击它时,代码如下: driver.find_element_by_class_name('gbqfba').click() 二:class属性值存在多个 注意:使用className来进行元素定位时,有时会碰到一个元素指定了若干个class属性值的“复合样式”的情况 页面源码如下: <button class ="btn btn_big btn_submit">登录</button> 这个元素的class有三个不同的值,我们只需要选择其中一个值就好了,代码如下: driver.find_element_by_class_name('btn_submit').click() 5.linkText定位 页面源码如下: <a href="/intl/en/about.html">我的名字叫做Kevin</a> 当我们要用linkText属性来定位这个按钮元素并点击它时,代码如下: driver.find_element_by_link_text('我的名字叫做Kevin').click() 6.partialLinkText定位 (注意:这个方法是上一个方法的扩展。当你不能准确知道超链接上的文本信息或者只想通过一些关键字进行匹配时,可以使用这个方法来通过部分链接文字进行匹配。) 页面源码如下: <a href="/intl/en/about.html">我的名字叫做Kevin</a> 当我们要用linkText属性来定位这个按钮元素并点击它时,代码如下: driver.find_element_by_partial_link_text('Kevin').click() 7.xpath定位 (这个方法是非常强大的元素查找方式,使用这种方法几乎可以定位到页面上的任意元素。) 查找页面根元素: // 查找页面上所有的input标签的元素: //input 代码:driver.find_elements_by_xpath('//input[1]') #注意:加个s代表定位多个元素 查找页面上第一个input标签的元素: //input[1] 代码:driver.find_element_by_xpath('//input[1]') 查找页面上标签为form且id为loginForm元素: //form[@id="loginForm"] 代码:driver.find_element_by_xpath('//form[@id="loginForm"]') 查找页面上具有name属性为username的input标签的元素: //input[@name="username"] 代码:driver.find_element_by_xpath('//input[@name="username"]') 查找页面上id为loginForm的form元素下的第一个input元素: //form[@id="loginForm"]/input[1] 代码:driver.find_element_by_xpath('//form[@id="loginForm"]/input[1]') 查找页面具有name属性为contiune并且type属性为button的input元素: //input[@name="continue" and @type="button"] 代码:driver.find_element_by_xpath('///input[@name="continue" and @type="button"]') 查找页面上id为loginForm的form元素下第4个input元素: //form[@id="loginForm"]/input[4] 代码:driver.find_element_by_xpath('//form[@id="loginForm"]/input[4]') 前面讲的都是xpath中基于准确元素属性的定位,其实xpath作为定位神器也可以用于模糊匹配。 1.用contains关键字,定位代码如下: driver.find_element_by_xpath("//a[contains(@href,‘logout’)]") 2.用start-with关键字,定位代码如下: driver.find_element_by_xpath("//a[starts-with(@rel,"nofo")]"); 3.用Text关键字,定位代码如下: driver.find_element_by_xpath('//*[text()="退出"]'); 4.用ends-with关键字,定位代码如下 driver.find_element_by_xpath("//a[ends-with(@rel,"nofo")]"); 8.css定位 css定位元素方式跟xpath比较类似,但执行速度较快,而且各种浏览器对它的支持都相当到位,所以功能也是蛮强大的。 下面是一些常见的cssSelector的定位方式: 定位id为flrs的div元素可以写成:#flrs 注:相当于xpath语法的//div[@id=’flrs’] 定位id为flrs下的a元素,可以写成 #flrs>a 注:相当于xpath语法的//div[@id=’flrs’]/a 定位id为flrs下的href属性值为 /forexample/about.html的元素,可以写成: # flrs > a[href=”/forexample/about.html”] 如果需要指定多个属性值时,可以逐一加在后面,如 #flrs>input[name=”username”][type=”text”] 最后再总结一下,各种方式在选择的时候应该怎么选择: 1.当页面元素有id属性时,尽量用id来定位。 2.xpath是屠龙刀,css是倚天剑,双剑合璧,才可以天下无敌,所以最好把这两种定位方式都掌握。 3.很多人说xpath定位比css慢,但个人感觉速度上没什么区别,可能是0.01和0.1的区别吧。
selenium自动化之元素定位方法的更多相关文章
- Selenium之WebDriver元素定位方法
Selenium WebDriver 只是 Python 的一个第三方框架, 和 Djangoweb 开发框架属于一个性质. webdriver 提供了八种元素定位方法,python语言中也有对应的方 ...
- 关于UI自动化IOS元素定位方法说明
1. 元素属性介绍 下图是通过weditor定位的微博的"我的钱包",各属性如下图: className:元素类型,如:XCUIElementTypeButton isEnable ...
- Selenium 八种元素定位方法
前言: 我们在做WEB自动化时,最根本的就是操作页面上的元素,首先我们要能找到这些元素,然后才能操作这些元素.工具或代码无法像我们测试人员一样用肉眼来分辨页面上的元素.那么我们怎么来定位他们呢? 在学 ...
- Selenium八种元素定位方法源码阅读
接触过Selenium的都知道元素定位有八种方法,但用不同的方法在执行时有什么区别呢? 元素定位8种方法(Python版),当然还有每一个方法对应的find_elements方法 find_eleme ...
- Selenium自动化-CSS元素定位
接下来,开始讲解 CSS元素定位. CSS定位速度快,功能多,但是不能向上查找,比 xpath好用,是本人认为最好用的定位方式 大致用法总结: 具体使用仿上篇博客.http://www.cnblo ...
- selenium常见的元素定位方法
一.获取元素 1)通过谷歌浏览器自动的工具访问百度首页,我们可以看到,页面上的元素都是由一行行的代码组成的,它们之间有层级地组织起来,每个元素之间都有不同的标签和值,我们可以通过这些不同的标签和值来找 ...
- Selenium自动化测试之元素定位
步骤: 1.通过前端工具,查看元素的属性 2.通过属性定位 iddriver.findElement(By.id("kw")) namedriver.findElement(By. ...
- selenium+python自动化之元素定位
自动化按步骤拆分的话,可以分为四步操作:定位元素,操作元素,获取返回结果,断言(返回结果与期望结果是否一致),最后自动出测试报告.本篇接下来讲基本的八种元素定位方法.说的通俗一点,就是教大家找对象. ...
- Selenium Web元素定位方法
Selenium是用于Web应用测试的自动化测试框架,可以实现跨浏览器和跨平台的Web自动化测试.Selenium通过使用WebDriver API来控制web浏览器,每个浏览器都都有一个特定的Web ...
随机推荐
- ES6标准入门 字符串的扩展
1:模板字符串与模板引擎 https://blog.csdn.net/crper/article/details/52940625 es6模板字符串中标签模板作为参数时产生空元素的问题 https:/ ...
- 将宿主主机上的目录挂载到Docker中
docker run -it -v /home/zhouqun/文档/workplace:/var/www/html ubuntu64 /bin/bash 将宿主主机中/home/文档/workpla ...
- docker安装后启动不了 解决方法
第一种情况: 可能是你的selinux没有disabled,导致了守护docker的deamon进程启动不了 查看系统日志如果发现下列信息: May 7 12:34:14 localhost dock ...
- chromedriver linux windows各版本下载地址
taobao镜像:https://www.baidu.com/link?url=gV12RWo7v_F-BDncFNKv_Rk9jF2nMix3Z7yMd84c2QvIB0LqcwxMxTPMUyb0 ...
- Reading Meticulous Measurement of Control Packets in SDN
SOSR 17 概要 网络流量中有一部分是用于网络管理,(根据packet process survey,该部分流量属于包转发的slow path部分)由于sdn的数控分离,交换机需要向控制器发送大量 ...
- Xcode 控制台打印Unicode字符串转换为中文
在Xcode的控制台里直接打印一个数组或者字典,输出的都是一些Unicode的编码,不方便调试. 要想看到中文,则要去获取对应的key或者数组下标.得到具体某一个对象才能看到中文,给我们调试起来 ...
- Scanner(基本用法初学)
package day01; import java.util.Scanner; public class Case05 { public static void main(String[] args ...
- vdbench 数据校验测试方法
[root@dntosu001 vdbench]# cat pbd.conf*SD: Storage Definition*WD: Workload Definition*RD: Run Defini ...
- JavaScript中的this详解(彻底弄懂js中的this用法)!
要想学好js,那么其中那些特别令人混淆迷惑的知识点,就一定要弄清楚.this关键字就是其中让初学者比较迷惑的知识点之一,不过灵活运用this可以提升代码的性能和复用性,那么今天我就和大家一起来了解th ...
- NodeJs 实现简单WebSocket 即时通讯
至于服务器语言选择nodeJs,一是因为自己是做前端的,对javascript比较熟悉,相比于其他后台语言,自然会更喜欢nodeJs了, 二是NodeJs本身事件驱动的方式很擅长与大量客户端保持高并发 ...