【Selenium专题】元素定位之一简单定位
UI自动化工具千变万化、架构千变万化,但都逃离不开的关键一步就是元素定位。下面以Selenium为例介绍常见的几个元素定位方法
ID -元素id属性
WebElement El = driver.findElement(by.id(“id”))
name-元素name属性
WebElement El=driver.findElement(by.name(“name”))
className-元素class属性
WebElement El = driver.findElement(by.className(“className”));
tagName-元素标签名
WebElement El = driver.findElement(by.tagName(“button”))
linkText-链接元素a的显示文字
WebElement El = driver.findElement(By.linkText("Inbox"));
partialLinkText
WebElement El = driver.findElement(By.partialLinkText("Inbox"));
补充:以上知识遍地都有,不多赘述。但真实环境中遇到的DOM往往很复杂的多,下面我们来分析一下可能会遇到的几种情况
1.分级定位:复杂环境可以先定位父级元素,然后再定位子元素,例如parentElement.findElement(By.***)
2.ID定位是最快速最准确的,但实际上需要开发人员的友好配合才能有唯一且确定的id可用,真实环境中往往会出现没有id,id重复或者动态id(extjs和query都是动态id);若动态id有规律我们还能考虑使用正则表达式,否则只能老老实实另谋出路了。
3.定位数组元素:实际使用中className和tagName经常被用来定位数组元素,例如driver.findElements(by.tagName(“**”))或driver.findElements(by.className(“**”))
例如,打开www.baidu.com,运行List<WebElement> Els= driver.findElements(by.tagName(“a”));看看是不是得到了一个元素数组
4.className不允许使用复合类名做参数
真实环境中元素往往使用复合类名(即多个class用空格分隔),使用className定位时要注意了,className的参数只能是一个class。
例如,打开http://hao.360.cn/,我们要使用className定位这个元素
<a class="tab-item news" data-page="http://sh.qihoo.com/daohang/index1.html" hidefocus="false"href="./brother.html#!news">新闻头条</a>
1)执行driver.findElements(by.className("news")),成功定位到元素
2)执行driver.findElements(by.className("tab-item news")),定位失败,报错信息:Compound class names not permitted,意思是不允许使用复合类名称
分析:className的参数仅允许是一个class,此处class="tab-item news"是复合类名,直接使用会报错
5.linkText与partialLinkText
遇到文字链接元素,首先考虑使用linkText定位,那它与partialLinkText有什么区别与特性呐?
1) linkText=链接文字,表示精准匹配链接文字;partialLinkText=部分链接文字,表示模糊匹配链接文字。例如定位一下元素
<a target="_blank" title="" href="http://www.nuomi.com/?cid=bdsywzl">劳动节不劳动,吃喝玩乐5.1元起!</a>
| driver.findElement(By.linkText("劳动节不劳动,吃喝玩乐5.1元起!"));
| driver.findElement(By.partialLinkText("吃喝玩乐"));
2.都对大小写敏感
这篇文章对两者进行了详细的介绍并附有案例http://blog.csdn.net/aerchi/article/details/8931023复杂定位:cssselector、xpath、javascript正在路上........
【Selenium专题】元素定位之一简单定位的更多相关文章
- selenium中元素操作之简单的鼠标、键盘操作(三)
1.鼠标操作导入类:ActionChains --鼠标的操作形成一连串的动作链,由selenium的ActionChains类来完成模拟鼠标操作手表操作的过程:1.鼠标的操作,先放到一个列表中2.利用 ...
- python3 + selenium 之元素定位
8种定位方式 定位一个元素 webdriver提供了一系列的对象定位方法,常用的有以下几种 driver.find_element_by_name()--最常用,简单 driver.find_elem ...
- 【基础】selenium中元素定位的常用方法(三)
一.Selenium中元素定位共有八种 id name className tagName linkText partialLinkText xpath cssSelector 其中前六种都比较简单, ...
- selenium界面元素定位
一. Selenium界面元素定位 本文元素定位以das2为例 #导入包 from selenium import webdriver #打开火狐驱动 driver=webdriver ...
- python+selenium遇到元素定位不到的问题,顺便记录一下自己这次的错误(报错selenium.common.exceptions.NoSuchElementException)
今天在写selenium一个发送邮件脚本时,遇到一些没有找到页面元素的错误.经过自己反复调试,找原因百度,终于解决了.简单总结一下吧,原因有以下几点: 一:Frame控件嵌套,.Frame/Ifram ...
- selenium webdriver学习(四)------------定位页面元素(转)
selenium webdriver学习(四)------------定位页面元素 博客分类: Selenium-webdriver seleniumwebdriver定位页面元素findElemen ...
- 《手把手教你》系列技巧篇(八)-java+ selenium自动化测试-元素定位大法之By id(详细教程)
1.简介 从这篇文章开始,要介绍web自动化核心的内容,也是最困难的部分了,就是:定位元素,并去对定位到的元素进行一系列相关的操作.想要对元素进行操作,第一步,也是最重要的一步,就是要找到这个元素,如 ...
- 《手把手教你》系列技巧篇(十四)-java+ selenium自动化测试-元素定位大法之By xpath上卷(详细教程)
1.简介 按宏哥计划,本文继续介绍WebDriver关于元素定位大法,这篇介绍定位倒数二个方法:By xpath.xpath 的定位方法, 非常强大. 使用这种方法几乎可以定位到页面上的任意元素. ...
- 《手把手教你》系列技巧篇(十五)-java+ selenium自动化测试-元素定位大法之By xpath中卷(详细教程)
1.简介 按宏哥计划,本文继续介绍WebDriver关于元素定位大法,这篇介绍定位倒数二个方法:By xpath.xpath 的定位方法, 非常强大. 使用这种方法几乎可以定位到页面上的任意元素. ...
随机推荐
- SSH三大框架的关系、使用到的jar包、配置文件图解
- meterpreter 如何留后门,使攻击持久化
安装后门方法一:meterpreter >run persistence -X -i 5 -p 443 -r 192.168.0.108 Persistent agent script is 6 ...
- On Line Tools
1)在线生成证书请求 https://www.icewarp.com/support/online_help/3206.htm 2)在线文件共享 https://reep.io/ https://sn ...
- [SoapUI] Command-Line Arguments
https://support.smartbear.com/readyapi/docs/soapui/running/automating/cli.html Use the test runner t ...
- 学习socket的小例子
/************************************************************** 技术博客 http://www.cnblogs.com/itdef/ ...
- mysql 导入导出摘要
1.导入by数据文件. mysql>load data infile '文件路径' into table 表名 fields terminated by '字段分隔符' lines termin ...
- [开源,学习,分享]UWP第三方简书客户端分享
简介 Windows10正式版发布到现在,我利用零零碎碎的一些时间对UWP进行一些学习,也基于这门技术开发了一个第三方的简书App. 基本界面 优酷视频: http://v.youku.com/v_s ...
- MySQL的left on 【zt】
MySQL的left on [zt] (2008-11-03 17:27:30) 转载▼ 标签: it 分类: 学习笔记 MySQL多表连接查询Left Join,Right Join php开源嘛 ...
- 2018.09.11 bzoj3629: [JLOI2014]聪明的燕姿(搜索)
传送门 一道神奇的搜索. 直接枚举每个质因数的次数,然后搜索就行了. 显然质因数k次数不超过logkn" role="presentation" style=" ...
- windows开启禁用网卡
' 在Windows中实现sudo命令--命令行环境中获取管理员权限 'ShellExecute 方法 '作用: 用于运行一个程序或脚本. '语法 ' .ShellExecute "appl ...