作者:高朗1_114 | 来源:互联网 | 2023-10-14 16:45
一、前言元素定位可以说是学自动化测试中必会技能之一,也可以说是通往自动化之路的开门钥匙。就元素定位方法,除了我们常用并熟知的8种元素定位方法之外,还有一种定位方法可以说是一种特殊的
一、前言 元素定位可以说是学自动化测试中必会技能之一,也可以说是通往自动化之路的开门钥匙。
就元素定位方法,除了我们常用并熟知的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" 的 元素 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('选择第一个元素标签定位 ')";//第一个 元素 js.executeScript(jq_input); Thread.sleep(2000);
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(); } } }
五、运行效果: