如何通过FirefoxProfile启动Mozilla浏览会话?

时间:2018-07-29 18:54:03

标签: java selenium firefox selenium-webdriver geckodriver

我正在尝试使用Firefox分析。但是它在代码的下面一行抛出了错误。请查看所附的快照

请,有人可以帮忙吗?

代码:-

WebDriver driver = new FirefoxDriver(prof);

enter image description here

错误:->

  

构造函数FirefoxDriver(FirefoxProfile)未定义

我正在使用的以下版本:-

  • 硒-> 3.12.0
  • Firefox设置50.0

代码:

 import java.util.concurrent.TimeUnit;
 import org.openqa.selenium.WebDriver;
 import org.openqa.selenium.firefox.FirefoxDriver;
 import org.openqa.selenium.firefox.FirefoxProfile;
 import org.openqa.selenium.firefox.internal.ProfilesIni;
 public class Gmail {

    public static void main(String[] args) {
       System.setProperty("webdriver.gecko.driver", "D:\\Drivers\\geckodriver.exe");

       ProfilesIni allProf = new ProfilesIni();// all profiles
       FirefoxProfile prof = allProf.getProfile("Abhi_Selenium");

       WebDriver driver = new FirefoxDriver(prof);
       driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
       driver.get("http://gmail.com");

2 个答案:

答案 0 :(得分:2)

没有这样的构造函数来获取配置文件并创建驱动程序。那就是异常告诉你的。您可以在此处查看javadoc:

https://seleniumhq.github.io/selenium/docs/api/java/org/openqa/selenium/firefox/FirefoxDriver.html

您可以尝试类似的操作:

FirefoxOptions options = new FirefoxOptions();
options.setProfile(yourProfile);
FirefoxDriver driver = new FirefoxDriver(options);

答案 1 :(得分:0)

如果您查看 Selenium Java Client v3.13.0 FirefoxDriver类的 Java文档,则有效的构造函数与如下:

很明显,根据您的代码试用,以下代码行不是有效的选择:

WebDriver driver = new FirefoxDriver(prof);

因此您看到的错误为:

The constructor FirefoxDriver(FirefoxProfile) is undefined

自动建议如下:

auto_suggestions

解决方案

作为解决方案:

  • 可以将FirefoxProfile的实例转换为DesiredCapabilities()类型的对象,然后将merge()转换为FirefoxOptions()类型的对象,如下所示:

    ProfilesIni profile = new ProfilesIni();
    FirefoxProfile testprofile = profile.getProfile("Abhi_Selenium");
    DesiredCapabilities dc = DesiredCapabilities.firefox();
    dc.setCapability(FirefoxDriver.PROFILE, testprofile);
    FirefoxOptions opt = new FirefoxOptions();
    opt.merge(dc);
    WebDriver driver =  new FirefoxDriver(opt);
    
  • 或者您可以通过setProfile()的实例直接使用FirefoxOptions()方法,如下所示:

    ProfilesIni profile = new ProfilesIni();
    FirefoxProfile testprofile = profile.getProfile("Abhi_Selenium");
    FirefoxOptions opt = new FirefoxOptions();
    opt.setProfile(testprofile);
    WebDriver driver =  new FirefoxDriver(opt);
    

注意:要在 Test Execution 中使用现有的 Firefox配置文件,您必须先创建 Firefox配置文件手动按照Creating a new Firefox profile on Windows上的说明进行操作。