由于使用selenium3,故启动firefox浏览器时已经不能像以前那样不需要driver就可以启动了,需要添加driver,driver名称为geckodriver.exe,下载地址:https://github.com/mozilla/geckodriver/releases
如前言所述,由于selenium3更新,导致现在启动firefox也需要设置驱动。但是由于以前的firefox启动时时不需要的,所以现在对于不同版本的firefox浏览器启动方式有所不同。本教程使用windows10,故linux和mac上启动firefox有何不同还需要研究;
对于47以上版本的firefox浏览器,使用如下代码:
System.setProperty("webdriver.gecko.driver", ".\\Tools\\geckodriver.exe")
对于47版本及以下版本的firefox浏览器,则使用如下代码:
System.setProperty("webdriver.firefox.marionette", ".\\Tools\\geckodriver.exe");
此处启动firefox不需要加任何参数,简单的启动方式如下:
public static void main( String[] args )
{
System.setProperty("webdriver.gecko.driver", ".\\Tools\\geckodriver.exe");
FirefoxDriver firefox = new FirefoxDriver();
firefox.get("https://www.baidu.com/");
}
基本方法如下:
FirefoxOptions options = new FirefoxOptions();
FirefoxDriver firefox = new FirefoxDriver(options);
如上的options
此项和chrome浏览器类似,基本使用方法为:
FirefoxOptions options = new FirefoxOptions();
options.addArguments("-devtools");
FirefoxDriver firefox = new FirefoxDriver(options);
当然addArguments方法可以添加一个命令列表,也可以添加多个命令,如下:
FirefoxOptions options = new FirefoxOptions();
options.addArguments("-devtools", "-tray");//连续添加多个
List<String> list = new ArrayList<String>();
list.add("-safe-mode");
options.addArguments(list);//添加命令列表
FirefoxDriver firefox = new FirefoxDriver(options);
如下为一些可用的启动命令及其含义:
这个headless模式与chrome浏览器的该模式相同,即不打开浏览器GUI但是可以正常运行脚本,属于隐藏启动模式,使用代码如下:
public static void main( String[] args )
{
System.setProperty("webdriver.gecko.driver", "D:\\test\\driver\\geckodriver.exe");
FirefoxOptions options = new FirefoxOptions();
options.setHeadless(true);//此处设置headless模式
FirefoxDriver firefox = new FirefoxDriver(options);
firefox.get("https://www.baidu.com/");
String title = firefox.getTitle();
System.out.println(title);
firefox.quit();
}
和chrome不一样firefox.exe可以安装多个不同版本的在同一台电脑上,所以有时候我们可以启动不同的火狐浏览器,方法为设定firefox.exe的路径即可,使用方法setBinary
,如下所示:
public static void main( String[] args )
{
System.setProperty("webdriver.gecko.driver", "D:\\test\\driver\\geckodriver.exe");
FirefoxOptions options = new FirefoxOptions();
options.setBinary("C:\\Program Files\\Mozilla Firefox\\firefox.exe");//设定启动的获取浏览器的firefox.exe的路径;
FirefoxDriver firefox = new FirefoxDriver(options);
firefox.get("https://www.baidu.com/");
String title = firefox.getTitle();
System.out.println(title);
firefox.quit();
}
此处类似chrome浏览器的添加设置,使用基本方法如下:
FirefoxOptions options = new FirefoxOptions();
options.addPreference(key, value);
FirefoxDriver firefox = new FirefoxDriver(options);
此处可以添加用户自定义的设置,基本使用方法如下:
FirefoxOptions options = new FirefoxOptions();
ProfilesIni allProfile = new ProfilesIni();
FirefoxProfile profile = allProfile.getProfile("default");//此处default为用户自定义设置的名称,获取其他设置的名称;
FirefoxDriver firefox = new FirefoxDriver(options);
此处如果使用default则是使用用户自定义设置,类似chrome的options.addArguments("--user-data-dir=C:/Users/user_name/AppData/Local/Google/Chrome/User Data");
此处与chrome添加代理相同,此处不再复数;
如果想要在浏览器启动时附加组件,则需要使用添加profile的方法,先自定义一个新的profile,而后在selenium启动firefox时配置加载此profile即可;
FirefoxOptions options = new FirefoxOptions();
FirefoxProfile profile = new FirefoxProfile(profileDir);
options.setProfile(profile);
FirefoxDriver firefox = new FirefoxDriver(options);