使用Selenium执行自动化测试 - java版(1)
使用Selenium的准备工作
- 安装需要的浏览器
- 下载浏览器对应的Driver
下载浏览器的驱动
各个浏览器Driver的下载地址
ChromeDriver: http://chromedriver.storage.googleapis.com/index.html
EdgeDriver: http://go.microsoft.com/fwlink/?LinkId=619687
FirefoxDriver: https://github.com/mozilla/geckodriver/releases
InternetExplorerDriver: http://selenium-release.storage.googleapis.com/index.html
OperaDriver: https://github.com/operasoftware/operachromiumdriver/releases
SafariDriver的驱动应该已经内置在苹果系统中,无需再下载(看源码是这样,没有苹果电脑也无法尝试)
导入依赖包
在pom.xml中导入selenium的依赖包,本例使用3.9.1版本
可以在maven库中选择其他版本:https://mvnrepository.com/artifact/org.seleniumhq.selenium/selenium-java
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-java</artifactId>
<version>3.9.1</version>
</dependency>
导入后会有各个浏览器的依赖包
写一段测试代码,实现自动打开谷歌浏览器,访问百度首页,加载完成后得到标题(也就是HTML title标签中的内容)
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.chrome.ChromeDriverService;
import org.openqa.selenium.chrome.ChromeOptions;
import com.google.common.collect.ImmutableMap;
import com.google.common.collect.ImmutableSortedMap;
public class TestTitle {
public static void main(String[] args) {
// WebDriver driver = new EdgeDriver();
// WebDriver driver = new FirefoxDriver();
// WebDriver driver = new InternetExplorerDriver(); //IE浏览器
// WebDriver driver = new OperaDriver();
// WebDriver driver = new SafariDriver();
/*
* 指定浏览器驱动的路径
* 不指定会报 "org.openqa.selenium.WebDriverException: unknown error: cannot find Chrome binary" 异常
* 注意:使用不同浏览器时,此处的key也不一样
*/
System.setProperty("webdriver.chrome.driver", "F:\\LGC\\自动化测试\\chromedriver.exe");
ChromeOptions options = new ChromeOptions();
//指定浏览器的启动文件路径
//不指定会报 "java.lang.IllegalStateException: The path to the driver executable must be set by the webdriver.chrome.driver system property" 异常
options.setBinary("C:\\Program Files (x86)\\Chrome\\chrome.exe");
WebDriver driver = new ChromeDriver(options); //使用谷歌浏览器测试,运行后会自动打开谷歌浏览器
/*
* 以上两个路径也可以不设置,把浏览器驱动放到浏览器的安装目录下,然后配置环境变量指向浏览器安装目录即可
* 注意 环境变量名必须是path,可以不区分大小写
* 这时就可以使用无参ChromeDriver()
* WebDriver driver = new ChromeDriver();
*/
driver.get("http://www.baidu.com/"); //访问外网资源
// driver.get("file:///F:\\LGC\\workspace_cloud\\UI-Test\\html\\index.html"); //访问本地资源,开头加不加file:///都可以
String title = driver.getTitle(); //获得浏览器中的标题
System.out.printf(title); //会输出“百度一下,你就知道”
driver.close();
}
}
设置环境变量
如果使用无参ChromeDriver()实例化WebDriver 对象就需要设置环境变量,指定浏览器的安装目录和Driver的路径。环境变量名必须是“path”(可以不区分大小写)
如果为了方便可以把驱动放在浏览器的安装目录下,环境变量就指向浏览器的安装目录,这样运行时就会在这个目录下找浏览器的驱动和浏览器的启动程序
现在可以运行一下试一试,会自动打开浏览器,并访问百度,打印出标题