Selenium WebDriver在启动火狐时,默认启动的是一个全新的没有安装任何插件的火狐浏览器,我们一般都是在这种情况下运行脚本的。
但是有时候我们会需要使用到火狐的一些插件,比如说脚本执行中断了,我们需要用Try Xpath(相当于之前的Firebug)等小插件来判断下元素定位等写的是不是正确,如果脚本的步骤比较长,我们手工启动电脑中平时使用的带插件的火狐浏览器,再重新操作到中断步骤的话,就会不太方便。
这个时候就可以启动带插件的火狐浏览器,启动带插件的火狐浏览器时是可以指定具体带哪个插件的,不过本文启动的是和我们手工使用时完全一样的火狐浏览器,手工使用的火狐浏览器中安装了多少插件,用本文的方法启动后就会有多少个插件,这个火狐浏览器的profile名字默认叫“default”。
注:profile中存放了火狐浏览器中很多基于用户的个性化的设置,比如插件、书签、个人喜好的首页等等,火狐浏览器是可以创建多个profile的,可以独立为它们命名,平时默认操作的profile名字叫“default”
import org.openqa.selenium.firefox.FirefoxOptions;
import org.openqa.selenium.firefox.FirefoxProfile;
import org.openqa.selenium.firefox.internal.ProfilesIni;
ProfilesIni allProfiles = new ProfilesIni();
FirefoxProfile profile = allProfiles.getProfile("default");
解释:
创建了allProfiles实例化对象后,使用此对象调用getProfile方法,指定使用“default”profile,并传给火狐实例化的对象profile。
FirefoxOptions options = new FirefoxOptions();
options.setProfile(profile);
解释:
实例化FirefoxOptions类的对象:options,并调用setProfile方法获取到步骤2中的default profile
注意:
到这个步骤时,网上有很多之前旧版本的解决方案都是没有步骤3中的步骤,而直接用下面的语句
ProfilesIni allProfiles = new ProfilesIni();
FirefoxProfile profile = allProfiles.getProfile("default");
WebDriver driver = new FirefoxDriver(profile);
这个红色的语句或这种构造在新的selenium java WebDriver3.6 以后已经被废弃掉了:
FirefoxDriver Constructor (FirefoxBinary, FirefoxProfile) | WebDriver |
Note: This API is now obsolete.
再这样写的话就会报下面的错误:
The constructor FirefoxDriver(FirefoxProfile) is undefined
所以现在新版本的webdriver都需要增加步骤3中的语句
WebDriver driver = new FirefoxDriver(options);
options中指定的就是default profile的火狐浏览器,启动时会看到和平时手工操作一样的带插件的火狐了。
【完成】
package learnwebdriver;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.firefox.FirefoxOptions;
import org.openqa.selenium.firefox.FirefoxProfile;
import org.openqa.selenium.firefox.internal.ProfilesIni;
public class OpenWebsite_profile {
public static void main(String[] args) throws InterruptedException {
//定义gecko driver的获取地址
System.setProperty("webdriver.gecko.driver", "D:\\BrowserDriver\\geckodriver.exe");
//下面的语句用来启动带插件的火狐浏览器
ProfilesIni allProfiles = new ProfilesIni();
FirefoxProfile profile = allProfiles.getProfile("default");
FirefoxOptions options = new FirefoxOptions();
options.setProfile(profile);
//创建一个叫driver的对象,启动火狐浏览器
WebDriver driver = new FirefoxDriver(options);
//通过对象driver调用具体的get方法来打开网页
driver.get("http://www.eteams.cn/");
//最大化浏览器窗口
driver.manage().window().maximize();
Thread.sleep(5000);
//退出浏览器
driver.quit();
}
}
********************************************************************************************************
近期我会在博客中系统的更新一些关于Selenium的文章,也请大家多多关注下我的视频课程:
*********************************************************************************************************
阅读更多精彩文章,请大家关注我的测试公众号:火烈鸟测试