一、前言

元素定位可以说是学自动化测试中必会技能之一,也可以说是通往自动化之路的开门钥匙。

就元素定位方法,除了我们常用并熟知的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做定位元素,做自动化测试你尝试过吗的更多相关文章

  1. js 或Jquery操作定位元素

    属性过滤常用javascript后去DOM对象 id是定位到的是单个element元素对象,其它的都是elements返回的是list对象 1.通过id获取 document.getElementBy ...

  2. Python+Appium自动化测试(12)-通过坐标定位元素

    在使用appium做app自动化测试的过程中,可能会遇到元素的属性值不是唯一的情况,导致不能通过find_element_bi_xx()方法定位元素,这个时候我们就可以通过坐标来定位元素. 1,通过绝 ...

  3. Selenium3自动化测试【20】CSS定位元素

    CSS 指层叠样式表 (CascadingStyleSheets),CSS一种用来表现HTML或XML等文件样式的计算机语言,其能够灵活的为页面提供丰富样式的风格. CSS使用选择器为页面元素绑定属性 ...

  4. jquery.form 和MVC4做无刷新上传DEMO

    jquery.form 和MVC4做无刷新上传DEMO HTML: <script src="~/Scripts/jquery-1.10.2.min.js"></ ...

  5. Selenium3自动化测试【18】XPath定位元素(2)

    层级与属性结合定位 如果被定为的元素,无法通过自身属性来唯一标识自己,此时可以考虑借助上级元素来定位自己.举生活中的例子,一个婴儿刚出生,还没有姓名与身份证号,此时给婴儿进行检查时往往会标注为&quo ...

  6. Robot Framework与Web界面自动化测试学习笔记:利用xpath定位元素

    在rf中,利用selinum2的关键字进行用例编写时,很多关键字的参数是html元素的定位标识. 最简单的方式,是通过id 或name来描述元素定位信息,如 click  button    id=l ...

  7. Selenium 2自动化测试实战7(定位元素)

    一.xpath定位 1. 绝对定位 举例用百度输入框和搜索按钮 eg:find_element_by_xpath("/html/body/div/div[2]/div/div/div/fro ...

  8. UI对象库-定位元素与程序分离

    1.前言 这几天有人问我,UI自动化测试中使用到的页面定位元素应该存放在哪里比较合适?我想说的是如果你使用的是PO设计模式设计测试用例的话,可以把定位元素存在每一个page页面,一个page存放对应的 ...

  9. Appium+Python3+iOS定位元素

    前言: 最近在做IOS自动化测试,IOS的Appium环境都配置OK,执行起来真的慢,慢到怀疑人生,那么今天就来总结一下IOS定位方式和各个定位方式的速度排序. 据我观察,按查找元素的顺序速度,从快到 ...

随机推荐

  1. ASP .NET My97DatePicker

    My97DatePicker http://jingyan.baidu.com/article/e6c8503c7244bae54f1a18c7.html <input type="t ...

  2. 获取同时间段不同的时间 php

    /** * 根据指定日期返回经过的年月 * @param string $sDay 开始日期 * @param string $eDay 结束日期 * @returnse multitype:stri ...

  3. 模拟QQ窗口抖动效果(通过MoveWindow和Sleep进行模拟)

    RECT rtWindow; GetWindowRect(&rtWindow); //long x = 400; //long y = 200; long x = rtWindow.left; ...

  4. C# 金额转为大写金额

    /// <summary> /// 金额转为大写金额 /// </summary> public class MoneyConvertChinese { /// <sum ...

  5. Qt Widget 利用 Qt4.5 实现酷炫透明窗体

    本文讲述的是Qt Widget 利用 Qt4.5 实现酷炫透明窗体,QWidget类中的每一个窗口部件都是矩形,并且它们按Z轴顺序排列的.一个窗口部件可以被它的父窗口部件或者它前面的窗口部件盖住一部分 ...

  6. MVC4升级MVC5导致原项目出错的解决方法

    原文:MVC4升级MVC5导致原项目出错的解决方法 出现安全透明方法"WebMatrix.WebData.PreApplicationStartCode.Start()"尝试访问安 ...

  7. UWP访问KnownFolders.RemovableDevices时(读取U盘文件)抛出异常UnauthorizedAccessException

    读取U盘的文件时: StorageFile file = await folder.GetFileAsync("myfile.txt"); 抛出异常System.Unauthori ...

  8. .Net Random产生随机数

    之前用winform做过有个摇奖游戏,其中中奖条件为产生的两个随机数一致则中奖,测试发现每次都会中奖. 忘记方式是怎么解决的了,今天看到了传智论坛的一片文章也是关于Random的,就点进去看了,它里面 ...

  9. 论文阅读计划2(Deep Joint Rain Detection and Removal from a Single Image)

    Deep Joint Rain Detection and Removal from a Single Image[1] 简介:多任务全卷积从单张图片中去除雨迹.本文在现有的模型上,开发了一种多任务深 ...

  10. sklearn文本特征提取——TfidfVectorizer

    什么是TF-IDF IF-IDF(term frequency-inverse document frequency)词频-逆向文件频率.在处理文本时,如何将文字转化为模型可以处理的向量呢?IF-ID ...