Firefox webdriver始终打开第一个运行页面

时间:2015-11-26 11:08:40

标签: firefox selenium selenium-webdriver selenium-firefoxdriver

如何为FF暂时禁用此“首次运行”页面?

创建FF驱动程序时,它会打开选​​项卡 - https://www.mozilla.org/en-US/firefox/42.0/firstrun/learnmore/ 以及带有目标页面的附加标签。

8 个答案:

答案 0 :(得分:22)

要关闭这个烦人的起始页面:

More protection. The most privacy. Mozilla Firefox firstrun screen

在C#中使用Selenium 2.48我找到了以下解决方案:

FirefoxProfile prof = new FirefoxProfile();
prof.SetPreference("browser.startup.homepage_override.mstone", "ignore");
prof.SetPreference("startup.homepage_welcome_url.additional",  "about:blank");
Driver = new FirefoxDriver(prof);

......它永远不会打扰你。

注意:仅这些设置之一也可以使用。我一起使用它们使它成为防弹。

答案 1 :(得分:10)

如果有解决方案,可以正常使用

FirefoxProfile fp = new FirefoxProfile();
fp.setPreference("browser.startup.homepage", "about:blank");
fp.setPreference("startup.homepage_welcome_url", "about:blank");
fp.setPreference("startup.homepage_welcome_url.additional", "about:blank");

答案 2 :(得分:9)

我遇到了同样的问题。我刚刚将Selenium版本更改为2.48并解决了问题。

答案 3 :(得分:4)

这是由Selenium和Firefox版本之间不兼容引起的,但不是由任何特定版本号引起的。

如果您的WebDriver是最新版本,那么您应该是最新版本的1-2个Firefox版本。否则,如果WebDriver较旧,则将Firefox版本重新推回,或者升级Webdriver。

要获得较旧的Firefox,请尝试https://ftp.mozilla.org/pub/firefox/releases/http://www.oldapps.com/

或在Linux上,具体取决于您的发行版

yum list --showduplicates firefox
sudo yum install firefox-<version>

apt-cache show firefox | grep Version
sudo apt-get install firefox=<version>

答案 4 :(得分:3)

C#解决方案,将Selenium WebDriver升级到2.49.0为我解决了这个问题。

答案 5 :(得分:1)

以上解决方案不起作用,我已经尝试过了。 什么对我有用,可能对你有用(如果使用firefox 43或更少):

    prof.setPreference("xpinstall.signatures.required", false);
    prof.setPreference("toolkit.telemetry.reportingpolicy.firstRun", false);

43和selenium的问题是双重的,默认签名扩展设置(为真)和第一个运行页面。这些线都解决了这两个这些必须以编程方式设置。如果您尝试在about:config(或直接在prefs.js)中设置它们,它将不会影响您使用selenium打开的新浏览器。应该注意的是,他们说firefox 44不允许你设置签名扩展变量(所以这不会在44上工作)。

我在我现在正在使用的代码中包含了代码块,显示了正确的用法:

    FirefoxProfile prof = new FirefoxProfile();
    //FirefoxProfile prof = profile.getProfile("default");
    //prof.setPreference("browser.startup.homepage", proteinPageUrl);
    //prof.setPreference("startup.homepage_welcome_url", proteinPageUrl);
    //prof.setPreference("startup.homepage_welcome_url.additional", proteinPageUrl);
    prof.setPreference("xpinstall.signatures.required", false);
    prof.setPreference("toolkit.telemetry.reportingpolicy.firstRun", false);
    //Object socketLock = new Object();
    //synchronized(socketLock){

    //driver = new FirefoxDriver();
    driver = new FirefoxDriver(prof);

        //driver = forceInit();
        //driver.open();
    //}//end synch block

    //get protein page
    boolean done = true;
    do{
        driver.get(proteinPageUrl);

        final Wait<WebDriver> waitDriver = new FluentWait<WebDriver>(driver)
                   .withTimeout(30, java.util.concurrent.TimeUnit.SECONDS)
                   .pollingEvery(5, java.util.concurrent.TimeUnit.SECONDS);
        try{
            inputTextFeildElement = waitDriver.until(new Function<WebDriver,WebElement>(){
                public WebElement apply(WebDriver diver){
                    return driver.findElement(By.name("term"));
                    }});
        }

        catch(NoSuchElementException nsee){
            //if not find by name try find by id
            if(driver.findElements(By.id("term")).size() != 0){
                try{
                    inputTextFeildElement = driver.findElement(By.id("term"));
                    done = true;
                } catch(NoSuchElementException nsee2){
                    synchronized(threadLogFile){
                        try {
                            threadLogWriter = new PrintWriter(new FileWriter(threadLogFile.getAbsoluteFile(), true));
                        } catch (IOException ioe) {
                            System.out.println("error opening file for append: " + ioe.getMessage());
                            ioe.printStackTrace();
                        }//catch
                        threadLogWriter.println("Thread Id: " + threadId + " with thread name: " + threadName + " fails to find input element by name or id to put accession: " + accession);
                        threadLogWriter.flush();
                        threadLogWriter.close();
                    }//synchronized
                    done = false;
                }//catch nsee2
            }//catch nsee
        }
        catch(ElementNotVisibleException enve){
            done = false;
        }
    }while(!done);  

答案 6 :(得分:1)

如果您使用Capybara / Cucumber的selenium webdriver,那么您可以在使用startup.homepage_welcome_url.additional注册驱动程序时更改默认网址:

Capybara.register_driver :firefox do |app|
  profile = Selenium::WebDriver::Firefox::Profile.new
  profile['browser.startup.homepage_override.mstone'] = 'ignore'
  profile['startup.homepage_welcome_url.additional'] = 'about:blank'

  Capybara::Selenium::Driver.new(app, :browser => :firefox, :profile => profile)
end

答案 7 :(得分:0)

我遇到了同样的问题。 我的解决方案:

  • 我将Firefox降级为36.0。
  • Selenium 2.53.1工作正常。

我希望这有帮助。 :)