zoukankan      html  css  js  c++  java
  • java + selenium + testng实现简单的UI自动化

    新建Maven项目,添加需要的依赖

    1、新建一个Maven项目

    2、在pom.xml中添加需要的依赖,这里只要selenium和testng就行

        <!-- https://mvnrepository.com -->
        <dependencies>
            <dependency>
                <groupId>org.seleniumhq.selenium</groupId>
                <artifactId>selenium-java</artifactId>
                <version>3.4.0</version>
            </dependency>
    
            <dependency>
                <groupId>org.testng</groupId>
                <artifactId>testng</artifactId>
                <version>6.8.8</version>
                <scope>test</scope>
            </dependency>
    
        </dependencies>

     可以在https://mvnrepository.com里面搜索需要的库,选择版本,复制其依赖信息

    配置浏览器并获取一个句柄

    1、 新建一个Brower.java,配置浏览器设置,创建一个ChromeDriver实例

    import org.openqa.selenium.WebDriver;
    import org.openqa.selenium.chrome.ChromeDriver;
    import org.openqa.selenium.chrome.ChromeOptions;
    
    import java.util.HashMap;
    import java.util.Map;
    import java.util.concurrent.TimeUnit;
    
    /**
     * @Author: xinyi
     * @Description:
     * @Date: Created In 17:30 2018/8/2
     * @Modified By:
     */
    
    public class Brower {
        WebDriver driver;
    
        public WebDriver chrome() {
            String webDriverPath =  "Q:\testskill\web_auto\chromedriver.exe";
            System.setProperty("webdriver.chrome.driver",webDriverPath);
    
            ChromeOptions options = new ChromeOptions();
            options.addArguments("--start-maximized"); // 启动时自动最大化窗口
            options.addArguments("--disable-popup-blocking"); // 禁用阻止弹出窗口
            options.addArguments("no-sandbox"); // 启动无沙盒模式运行
            options.addArguments("disable-extensions"); // 禁用扩展
            options.addArguments("no-default-browser-check"); // 默认浏览器检查
            Map<String, Object> prefs = new HashMap();
            prefs.put("credentials_enable_service", false);
            prefs.put("profile.password_manager_enabled", false);
            options.setExperimentalOption("prefs", prefs);// 禁用保存密码提示框
    
            driver = new ChromeDriver(options);
            //设置寻找一个元素的时间
            driver.manage().timeouts().implicitlyWait(20, TimeUnit.SECONDS);
            return driver;
    
        }
    
    }

    注:chromdriver与浏览器版本对照表参照:https://blog.csdn.net/huilan_same/article/details/51896672

    打开网址,定位页面元素并操作

     1、新建一个TestDemo.java,初始化方法标记@BeforeTest注解,结束处理标记@AfterTest,测试对象方法标记@Test,其中使用@Parameters("searchWord")指定所传参数值来源于TestNG.xml中所配置

    import org.openqa.selenium.By;
    import org.openqa.selenium.WebDriver;
    import org.testng.annotations.AfterTest;
    import org.testng.annotations.BeforeTest;
    import org.testng.annotations.Parameters;
    import org.testng.annotations.Test;
    
    import java.util.concurrent.TimeUnit;
    
    /**
     * @Author: xinyi
     * @Description:
     * @Date: Created In 9:11 2018/8/3
     * @Modified By:
     */
    public class TestDemo {
        WebDriver driver;
    
        @BeforeTest
        public void init() {
            String url = "http://www.baidu.com";
    
            //新建一个浏览器句柄
            driver = new Brower().chrome();
            //打开URL
            driver.get(url);
        }
    
        @Test
        @Parameters("searchWord")
        public void search(String searchWord) throws InterruptedException {
            //输入搜索字符串
            driver.findElement(By.xpath("//*[@id="kw"]")).sendKeys(searchWord);
            //点击[百度一下]按钮
            driver.findElement(By.xpath("//*[@id="su"]")).click();
            Thread.sleep(2000);
        }
    
        @AfterTest
        public void teardown() {
            driver.quit();
        }
    
    }

    新建TestNG.xml并配置测试

    1、内容如下

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
    <suite name="Test Of TestNG">
    
        <test verbose="2" name="百度搜索">
            <parameter name="searchWord" value="钱学森" />
    
            <classes>
                <class name="TestDemo">
                    <methods>
                        <include name="search" />
                    </methods>
                </class>
            </classes>
        </test>
    
    </suite>

    运行程序

    1、运行TestNG.xml

    2、运行后,会启动浏览器,遇到如下提示,阻断程序

    停止WinDefend服务后依然不行,百度找到了一个解决方法,如下:

    3、还有一个问题,浏览器退出后,进程中chromedrive.exe仍存在,没有被关闭,当执行很多次程序时,就会造成系统卡顿了

    解决方案参考 https://blog.csdn.net/cainiaofeitian/article/details/69389814

    4、运行效果如下

    生成测试报告

    1、运行配置中,勾选Use default reporters,则运行结果会自动生成报告

     2、也可使用ReportNG报告,参考:https://www.cnblogs.com/kusy/p/8874059.html

  • 相关阅读:
    Go 指针
    Go 字符串
    Go Maps
    Go 可变参数函数
    Go 数组和切片
    pyqt5实现窗口跳转并关闭上一个窗口
    spy++查找窗口句柄
    Python中Tk模块简单窗口设计
    pyqt5无边框拖动
    pyqt5 GUI教程
  • 原文地址:https://www.cnblogs.com/kusy/p/9412936.html
Copyright © 2011-2022 走看看