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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM