PhantomJS + Selenium webdriver 总结-元素定位
webdriver提供了丰富的API,有多种定位策略:id,name,css选择器,xpath等,其中css选择器定位元素效率相比xpath要高些,使用id,name属性定位元素是最可靠,效率最高的一种办法。
1、元素定位的方法:find_element() 与find_elements()
find_element() 该方法返回基于指定查询条件的webElement对象,或抛出不符合条件的异常 eg:element = driver.find_element(By.ID,'u1')
ID:driver.findElement(By.ID,'elementID')
Name:driver.findElement(By.NAME,'elementName')
className:driver.findElement(By.CLASS_NAME,'elementClassName')
tagName:driver.findElement(By.TAG_NAME,'htmlTagName')
linkText:driver.findElement(By.LINK_TEXT,'linkText')
partialLinkText:driver.findElement(By.PARTIAL_LINK_TEXT,'partialLinkText')
css:driver.findElement(By.CSS_SELECTOR,'cssSelector')
xpath:driver.findElement(By.XPATH,'xpathQuery')
例如:url ='https://www.baidu.com/'
driver.find_element(By.ID,'u1')
driver.find_element(By.NAME,'tj_trnews')
driver.find_elements(By.CLASS_NAME,'mnav')
driver.find_element(By.ID,'u1').find_elements(By.TAG_NAME,'a')
driver.find_element(By.ID,'u1').find_element(By.LINK_TEXT,'新闻')
driver.find_element(By.ID,'u1').find_element(By.PARTIAL_LINK_TEXT,'闻')
driver.find_elements(By.CSS_SELECTOR,"a[name^='tj']") #匹配属性值name以tj开头的元素
driver.find_elements_by_xpath("//div[@id='u1']/a")
3、使用元素的任何属性来定位元素
driver.find_element(By.CSS_SELECTOR("标签名[属性名='属性值']"))
1、^= driver.find_element(By.CSS_SELECTOR("标签名[属性名^='xxx']")) 匹配属性值以xxx开头的元素
例如:driver.find_elements(By.CSS_SELECTOR,"a[name^='tj']") 匹配name值以tj开头的a元素集合
适用于:driver.find_elements_by_css_selector("a[name^='tj']")
2、$= driver.find_element(By.CSS_SELECTOR("标签名[属性名$='xxx']")) 匹配属性值以xxx结尾的元素
例如:driver.find_elements(By.CSS_SELECTOR,"a[name$='s']") 匹配name值以s结尾的a元素集合
适用于:driver.find_elements_by_css_selector("a[name$='s']")
3、*= driver.find_element(By.CSS_SELECTOR("标签名[属性名*='xxx']")) 匹配属性值包含xxx的元素
例如:driver.find_elements(By.CSS_SELECTOR,"a[name*='tr']") 匹配name值包含tr的a元素集合
适用于:driver.find_elements_by_css_selector("a[name*='tj']")
如:driver.find_elements(By.XPATH,"//a[starts-with(@name,'tj')]")
适用于:driver.find_elements_by_xpath("//a[starts-with(@name,'tj')]")
PhantomJS + Selenium webdriver 总结-元素定位的更多相关文章
- [selenium webdriver Java]元素定位——findElement/findElements
策略 语法 语法 描述 By id driver.findElement(By.id()) driver.findElements(By.id()) 通过id属性定位元素 By name driver ...
- selenium webdriver python 元素定位
总结 定位查找时,返回查找到的第一个match的元素.如果找不到,则 raise NoSuchElementException 单个元素定位: find_element_by_idfind_e ...
- Java + Selenium + WebDriver八大元素定位方式
UI自动化测试的第一步就是进行元素定位,下面给大家介绍一下Selenium + WebDriver的八大元素定位方式.现在我们就以百度搜索框为例进行元素定位,如下图: 一.By.name() Java ...
- selenium+java二元素定位
页面元素定位是自动化中最重要的事情, selenium Webdriver 提供了很多种元素定位的方法. 测试人员应该熟练掌握各种定位方法. 使用最简单,最稳定的定位方法. 自动化测试步骤 定位元素 ...
- selenium自动化之元素定位方法
在使用selenium webdriver进行元素定位时,有8种基本元素定位方法(注意:并非只有8种,总共来说,有16种). 分别介绍如下: 1.name定位 (注意:必须确保name属性值在当前ht ...
- Python3-Selenium自动化测试框架(二)之selenium使用和元素定位
Selenium自动化测试框架(二)之selenium使用和元素定位 (一)selenium的简单使用 1.导包 from selenium import webdriver 2.初始化浏览器 # 驱 ...
- Selenium WebDriver 8大定位方式
Selenium WebDriver 8大定位方式: driver.find_element_by_id() driver.find_element_by_name() driver.find_ele ...
- selenium webdriver 表格的定位方法练习
selenium webdriver 表格的定位方法 html 数据准备 <html> <body> <div id="div1"> <i ...
- Selenium的WebDriver API元素定位中的XPath和CSS
元素的定位和操作是自动化测试的核心部分,其中操作又是建立在定位的基础上的. 浏览器的常规操作 import time from selenium import webdriver # 打开浏览器 dr ...
随机推荐
- %和format的区别
在python中字符串的格式化分为两种:%和format.那么我们在什么时候来使用它们呢?它们有什么区别呢? 举个例子:我们根据一个坐标来表示一个动作 #定义一个坐标 point = (250,250 ...
- Decode Ways——动态规划
A message containing letters from A-Z is being encoded to numbers using the following mapping: 'A' - ...
- hdu5731
先求出不考虑分割线的n*m棋盘的覆盖方案数记为f[n][m] 然后枚举列分割线的状态(状压),计算此时不存在行分割线的方案数 求出这个我们就可以用容斥原理算出答案了 怎么算在列分割线确定的情况下,不存 ...
- AC日记——[Hnoi2017]影魔 bzoj 4826
4826 思路: 主席树矩阵加减+单调栈预处理: 代码: #include <bits/stdc++.h> using namespace std; #define maxn 200005 ...
- js对象替换键值名称
js对象替换键值名称 将obj中的id和name字段替换分别替换成为“@id”,“@name” 代码如下: let obj = [{id:,name:,name:"李四"}].ma ...
- gulp-connect插件浏览器实时同步刷新
1.在站点路径里打开cmd控制台. 输入:cnpm install gulp-connect --save-dev 2.编辑gulpfile.js 3.控制台执行gulp任务 输入gulp serve ...
- urllib2模块、cookielib模块
urllib2模块 urllib模块和urllib模块类似,用来打开URL并从中获取数据.与urllib模块不同的是,urllib模块不仅可以使用urlopen() 函数还可以自定义Opener来访问 ...
- ECNU 2018 10月月赛 E 盖房子 (bitset + 倍增)
题目链接 ECNU Monthly 2018.10 Problem E 从开场写到结束…… 显然要把三角形分成上下两部分. 把每一部分分成三部分,以上部分为例. 上面和右边,以及左下角的正方形. 也 ...
- 洛谷P2520向量
题目传送门 看到数据范围其实就可以确定这是一道结论题. 首先分析,给定你的向量的两个坐标a,b有八种组合方式可以用,但实际上整理一下可以得出实际上只有五种,x/y ±2a,x/y ±2b,x+a,y+ ...
- 【数据结构】 最小生成树(三)——prim算法
上一期介绍到了kruskal算法,这个算法诞生于1956年,重难点就是如何判断是否形成回路,此处要用到并查集,不会用当然会觉得难,今天介绍的prim算法在kruskal算法之后一年(即1957年)诞生 ...