一. 简介
本文介绍用 Java + selenium 实现启动和关闭 FireFox 浏览器。Selenium 主要用于测试 web 项目。所以首先要掌握打开和关闭浏览器。本篇文章先介绍一下启动FireFox。
二. 启动FireFox
直接看代码吧,稍后解释
package selenium_pro1;
import java.util.concurrent.TimeUnit;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
public class LaunchFireFox {
public static void main(String[] args) {
System.out.println("start selenium");
//初始化FireFox浏览器实例
WebDriver driver = new FirefoxDriver();
//最大化窗口
driver.manage().window().maximize();
//设置隐性等待时间
driver.manage().timeouts().implicitlyWait(8, TimeUnit.SECONDS);
//打开一个站点
driver.get("http://www.baidu.com/");
//获取当前页面的标题
System.out.println("当前打开页面的标题是:" + driver.getTitle());
//关闭浏览器
driver.close();
System.out.println("end selenium");
}
}
运行结果:
start selenium
Exception in thread "main" org.openqa.selenium.WebDriverException: Cannot find firefox binary in PATH. Make sure firefox is installed. OS appears to be: WIN10
Build info: version: '3.8.1', revision: '6e95a6684b', time: '2017-12-01T18:33:54.468Z'
System info: host: 'DESKTOP-90TCCQ8', ip: '192.168.1.185', os.name: 'Windows 10', os.arch: 'amd64', os.version: '10.0', java.version: '1.8.0_74'
Driver info: driver.version: FirefoxDriver
at org.openqa.selenium.firefox.FirefoxBinary.<init>(FirefoxBinary.java:116)
at java.util.Optional.orElseGet(Optional.java:267)
at org.openqa.selenium.firefox.FirefoxOptions.getBinary(FirefoxOptions.java:218)
at org.openqa.selenium.firefox.FirefoxDriver.toExecutor(FirefoxDriver.java:155)
at org.openqa.selenium.firefox.FirefoxDriver.<init>(FirefoxDriver.java:120)
at org.openqa.selenium.firefox.FirefoxDriver.<init>(FirefoxDriver.java:98)
at selenium_pro1.LaunchFireFox.main(LaunchFireFox.java:15)
出现了异常:找不到火狐浏览器的路径。所以需要设置火狐浏览器路径,用
System.setProperty ("webdriver.firefox.bin" , "D:\\Program Files (x86)\\Mozilla Firefox\\firefox.exe" );
再次运行,运行结果:
start selenium
Exception in thread "main" java.lang.IllegalStateException: The path to the driver executable must be set by the webdriver.gecko.driver system property; for more information, see https://github.com/mozilla/geckodriver. The latest version can be downloaded from https://github.com/mozilla/geckodriver/releases
at com.google.common.base.Preconditions.checkState(Preconditions.java:754)
at org.openqa.selenium.remote.service.DriverService.findExecutable(DriverService.java:124)
at org.openqa.selenium.firefox.GeckoDriverService.access$100(GeckoDriverService.java:41)
at org.openqa.selenium.firefox.GeckoDriverService$Builder.findDefaultExecutable(GeckoDriverService.java:141)
at org.openqa.selenium.remote.service.DriverService$Builder.build(DriverService.java:339)
at org.openqa.selenium.firefox.FirefoxDriver.toExecutor(FirefoxDriver.java:158)
at org.openqa.selenium.firefox.FirefoxDriver.<init>(FirefoxDriver.java:120)
at org.openqa.selenium.firefox.FirefoxDriver.<init>(FirefoxDriver.java:98)
at selenium_pro1.LaunchFireFox.main(LaunchFireFox.java:16)
再次出现异常,问题是没有安装geckodriver。解决方法:打开 https://github.com/mozilla/geckodriver/releases 下载与系统相对性一个Windows 版本的 geckodriver 。解压,并把 geckodriver.exe 放在 D:\selenium 下。并在代码最首加入设置geckodriver.exe 路径的代码。
System.setProperty("webdriver.gecko.driver", "D:\\selenium\\geckodriver.exe");
运行成功,结果如下:
三. 总结
(1)启动火狐浏览器需要首先设置 FireFox 安装路径 与 geckodriver 路径 并初始化浏览器。
(2)浏览器启动需要一定的时间,所以需要设置等待时间,等浏览器完全加载,在输入地址。
(3)driver.get(); 打开一个站点。
(4)driver.close(); 关闭浏览器。