用jQuery做定位元素,做自动化测试你尝试过吗
一、前言
元素定位可以说是学自动化测试中必会技能之一,也可以说是通往自动化之路的开门钥匙。
就元素定位方法,除了我们常用并熟知的8种元素定位方法之外,还有一种定位方法可以说是一种特殊的存在,那就是JQuery定位,是常用8种定位之外的方法,相对于js定位,JQuery语法比较简洁一些,而且方便快捷。
二、关于jQuery 语法
jQuery 语法是为 HTML 元素的选取编制的,可以对元素执行某些操作。
基础语法是:$(selector).action()
美元符号定义 jQuery
选择符(selector)“查询”和“查找” HTML 元素
jQuery 的 action() 执行对元素的操作
示例
- $(this).hide() - 隐藏当前元素
- $("p").hide() - 隐藏所有段落
- $(".test").hide() - 隐藏所有 class="test" 的所有元素
- $("#test").hide() - 隐藏所有 id="test" 的元素
提示:jQuery 使用的语法是 XPath 与 CSS 选择器语法的组合。
关于更多jquery语法可以学下w3school的教程:http://www.w3school.com.cn/jquery/jquery_syntax.asp。
三、使用JQuery定位元素
1、根据id定位
String jq_input = "$('#kw').val('使用id定位')"; //选取id为kw的元素
js.executeScript(jq_input);
Thread.sleep(2000);
2、根据type定位
jq_input = "$(':text').val('使用type定位')"; //选取所有 type="text" 的 <input> 元素
js.executeScript(jq_input);
Thread.sleep(2000);
3、根据class定位
jq_input = "$('.s_ipt').val('使用class定位')";//选取所有 class="s_ipt" 的元素
js.executeScript(jq_input);
Thread.sleep(2000);
4、按层级定位
- 带有标签的层级定位
jq_input = "$('.s_ipt').val('使用class定位')"; //选取所有 span标签下子元素为input标签且class属性为s_ipt 的元素
js.executeScript(jq_input);
Thread.sleep(2000);
- 不带有标签的层级定位
jq_input = "$('input.s_ipt').val('不带有标签的层级定位 ')";//选取所有 input标签且class属性为s_ipt 的元素
js.executeScript(jq_input);
Thread.sleep(2000);
- 选择第一个元素标签定位
jq_input = "$('span>input:first').val('选择第一个元素标签定位 ')";//第一个 <input> 元素
js.executeScript(jq_input);
Thread.sleep(2000);
- 选择指定元素 标签:eq(索引位) – 从0开始
jq_input = "$('span input:eq(0)').val('选择最后一个元素')";//列表中的第1个元素(index 从 0 开始)6
js.executeScript(jq_input);
Thread.sleep(2000);
四、使用Jquery定位方式完成自动化测试
既然我们已经掌握了jquery这种定位方式,下面我们就用jquery定位方式,模拟360影视看看登陆操作实际代码如下:
package com.autotest.api; import org.openqa.selenium.JavascriptExecutor;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.testng.annotations.AfterClass;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test; /**
* selenium 使用Jquery定位方式模拟登陆实例
*
* @author longrong.lang
*/ public class LoadJQuery { private static WebDriver driver;
JavascriptExecutor js; @BeforeClass
public void beforeClass() {
driver = new ChromeDriver();
driver.manage().window().maximize();
driver.get("https://i.360kan.com/login");
js = (JavascriptExecutor) driver; } @Test
public void testJQuery() throws InterruptedException {
String userName = "$('input[name=\"loginname\"]').val('Refain 博客园');";
js.executeScript(userName);
String passWord = "$('input[name=\"loginpassword\"]').val('111111');";
js.executeScript(passWord);
String login = "$('.js-b-signin-c-btn [href]').click();";
js.executeScript(login);
Thread.sleep(3000); } @AfterClass
public void afterClass() {
if (driver != null) {
driver.quit();
}
} }
五、运行效果:

用jQuery做定位元素,做自动化测试你尝试过吗的更多相关文章
- js 或Jquery操作定位元素
属性过滤常用javascript后去DOM对象 id是定位到的是单个element元素对象,其它的都是elements返回的是list对象 1.通过id获取 document.getElementBy ...
- Python+Appium自动化测试(12)-通过坐标定位元素
在使用appium做app自动化测试的过程中,可能会遇到元素的属性值不是唯一的情况,导致不能通过find_element_bi_xx()方法定位元素,这个时候我们就可以通过坐标来定位元素. 1,通过绝 ...
- Selenium3自动化测试【20】CSS定位元素
CSS 指层叠样式表 (CascadingStyleSheets),CSS一种用来表现HTML或XML等文件样式的计算机语言,其能够灵活的为页面提供丰富样式的风格. CSS使用选择器为页面元素绑定属性 ...
- jquery.form 和MVC4做无刷新上传DEMO
jquery.form 和MVC4做无刷新上传DEMO HTML: <script src="~/Scripts/jquery-1.10.2.min.js"></ ...
- Selenium3自动化测试【18】XPath定位元素(2)
层级与属性结合定位 如果被定为的元素,无法通过自身属性来唯一标识自己,此时可以考虑借助上级元素来定位自己.举生活中的例子,一个婴儿刚出生,还没有姓名与身份证号,此时给婴儿进行检查时往往会标注为&quo ...
- Robot Framework与Web界面自动化测试学习笔记:利用xpath定位元素
在rf中,利用selinum2的关键字进行用例编写时,很多关键字的参数是html元素的定位标识. 最简单的方式,是通过id 或name来描述元素定位信息,如 click button id=l ...
- Selenium 2自动化测试实战7(定位元素)
一.xpath定位 1. 绝对定位 举例用百度输入框和搜索按钮 eg:find_element_by_xpath("/html/body/div/div[2]/div/div/div/fro ...
- UI对象库-定位元素与程序分离
1.前言 这几天有人问我,UI自动化测试中使用到的页面定位元素应该存放在哪里比较合适?我想说的是如果你使用的是PO设计模式设计测试用例的话,可以把定位元素存在每一个page页面,一个page存放对应的 ...
- Appium+Python3+iOS定位元素
前言: 最近在做IOS自动化测试,IOS的Appium环境都配置OK,执行起来真的慢,慢到怀疑人生,那么今天就来总结一下IOS定位方式和各个定位方式的速度排序. 据我观察,按查找元素的顺序速度,从快到 ...
随机推荐
- C# 不重启程序修改并保存配置文件(appSettings节点)
原文:C# 不重启程序修改并保存配置文件(appSettings节点) private static void UpdateAppConfig(string newKey, string newVal ...
- ADB 基础命令使用
1.adb shell(>=2个设备显示:error: more than one device/emulator,仅连接一个设备可用) adb -d shell 只运行在真实设备中 adb - ...
- PySide——Python图形化界面入门教程(六)
PySide——Python图形化界面入门教程(六) ——QListView和QStandardItemModel 翻译自:http://pythoncentral.io/pyside-pyqt-tu ...
- axure跨inframe传递参数
在global variable添加loginuser变量 在link to and external url or file添加如下:[[Item.action]]#loginuser=[[logi ...
- JS function document.onclick(){}报错Syntax error on token "function", delete this token - CSDN博客
原文:JS function document.onclick(){}报错Syntax error on token "function", delete this token - ...
- 想让一个Widget成为模态,我们只需要对其设置setAttribute(Qt::WA_ShowModal, true);
想让一个Widget成为模态,我们只需要对其设置: setAttribute(Qt::WA_ShowModal, true); 注意:这是QWidget的成员函数 ,也就是说,QWidget可以显示为 ...
- 线性回归模型(Linear Regression)及Python实现
线性回归模型(Linear Regression)及Python实现 http://www.cnblogs.com/sumai 1.模型 对于一份数据,它有两个变量,分别是Petal.Width和Se ...
- WIN10以后如果Manifest中不写支持WIN10的话,获取版本号的API获取的是6
if TOSVersion.Major = 10 then // 高版本的Delphi(比如Berlin)可以这样写 ShowMessage('Windows 10'); 或者: if Win32M ...
- [机器学习]SVM原理
SVM是机器学习中神一般的存在,虽然自深度学习以来有被拉下神坛的趋势,但不得不说SVM在这个领域有着举足轻重的地位.本文从Hard SVM 到 Dual Hard SVM再引进Kernel Trick ...
- mysql8解压版安装
1.下载 下载mysql8 2.安装 ① 解压到需要安装的目录,然后新建一个my.ini(位于解压目录下,与bin目录在同一个目录下) # For advice on how to change se ...