zoukankan      html  css  js  c++  java
  • 用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();
            }
        }
    
    }
    
     
    

    五、运行效果:

  • 相关阅读:
    IDEA 远程调试springboot
    Mybatitas-plus实现逻辑删除
    java通过poi导出excel
    js 展示当前时间
    Linux环境下服务自启
    Spring自带定时器@Scheduled
    Quartz任务调度框架相关方法、参数理解
    Quartz 实现定时任务
    mysql 使用union(all) + order by 导致排序失效
    mongodb的查询操作
  • 原文地址:https://www.cnblogs.com/longronglang/p/11178863.html
Copyright © 2011-2022 走看看