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