新建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