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

Firefox webdriver始终打开第一次运行页面,firefox,selenium,selenium-webdriver,selenium-firefoxdriver,Firefox,Selenium,Selenium Webdriver,Selenium Firefoxdriver,如何一次性禁用FF的“首次运行”页面 创建FF驱动程序时,会打开带有- 以及带有目标页面的附加选项卡。如果找到解决方案,则效果良好 FirefoxProfile fp = new FirefoxProfile(); fp.setPreference("browser.startup.homepage", "about:blank"); fp.setPreference("startup.homepage_welcome_url", "about:blank"); fp.setPreference

如何一次性禁用FF的“首次运行”页面

创建FF驱动程序时,会打开带有-
以及带有目标页面的附加选项卡。

如果找到解决方案,则效果良好

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");

我也面临同样的问题。我刚刚将Selenium版本更改为2.48,问题已经解决。

要关闭这个恼人的起始页:

在含硒2.48的C#中,我发现了以下解决方案:

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);
…你再也不会烦恼了


注意:这些设置中的一个也可以单独使用。我将它们结合在一起使用,使其防弹。

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

    prof.setPreference("xpinstall.signatures.required", false);
    prof.setPreference("toolkit.telemetry.reportingpolicy.firstRun", false);
43和selenium的问题有两个:默认的签名扩展设置(为true)和第一次运行页面。这两条线解决了这两个问题。这些必须按程序设置。如果您尝试在about:config(或直接在prefs.js)中设置它们,则不会影响使用selenium打开的新浏览器。应该注意的是,他们说Firefox44不允许您设置signed extensions变量(因此这在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);  
FirefoxProfile prof=newfirefoxprofile();
//FirefoxProfile prof=profile.getProfile(“默认”);
//prof.setPreference(“browser.startup.homepage”,proteinPageUrl);
//setPreference教授(“startup.homepage\u welcome\u url”,proteinPageUrl);
//setPreference教授(“startup.homepage\u welcome\u url.additional”,proteinPageUrl);
prof.setPreference(“xpinstall.signatures.required”,false);
setPreference教授(“toolkit.telemetry.reportingpolicy.firstRun”,错误);
//对象socketLock=新对象();
//已同步(socketLock){
//驱动程序=新的FirefoxDriver();
驱动程序=新的Firefox驱动程序(prof);
//driver=forceInit();
//driver.open();
//}//端同步块
//获取蛋白质页面
布尔完成=真;
做{
获取(proteinPageUrl);
最终等待等待驱动程序=新FluentWait(驱动程序)
.withTimeout(30,java.util.concurrent.TimeUnit.SECONDS)
.pollingEvery(5,java.util.concurrent.TimeUnit.SECONDS);
试一试{
InputExtFeilDelete=waitDriver.until(新函数(){
公共WebElement应用(WebDriver潜水员){
返回驱动程序findElement(按名称(“术语”);
}});
}
捕获(非接触元素异常nsee){
//如果不按名称查找,请尝试按id查找
if(driver.findElements(By.id(“术语”)).size()!=0){
试一试{
InputExtFeilDelete=driver.findElement(By.id(“术语”);
完成=正确;
}捕获(无接触元素异常nsee2){
已同步(线程日志文件){
试一试{
threadLogWriter=new PrintWriter(new FileWriter(threadLogFile.getAbsoluteFile(),true));
}捕获(ioe异常ioe){
System.out.println(“打开附加文件时出错:+ioe.getMessage());
ioe.printStackTrace();
}//抓住
println(“线程Id:+threadId+”,线程名为“+threadName+”,无法按名称或Id找到输入元素以放入加入:“+accession”);
threadLogWriter.flush();
threadLogWriter.close();
}//同步的
完成=错误;
}//捕捉nsee2
}//抓住nsee
}
catch(ElementNotVisibleException环境){
完成=错误;
}
}而(!完成);

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

这是由于Selenium和Firefox版本之间的不兼容造成的,而不是任何一个特定的版本号

如果您的WebDriver是最新版本的,那么您的Firefox版本应该比最新版本落后1-2个。否则,如果您的WebDriver较旧,请进一步回滚Firefox版本,或者升级WebDriver

要获得较旧的Firefox,请尝试或

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

yum list --showduplicates firefox
sudo yum install firefox-<version>
yum列表--showduplicates firefox
sudo-yum安装firefox-

apt缓存显示firefox | grep版本
sudoapt安装firefox=

如果您使用来自Capybara/Cucumber的selenium webdriver,那么您可以在使用
startup.homepage\u welcome\u url注册驱动程序时更改默认url。其他

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
我也面临同样的问题。 我的解决方案:

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);
  • 我将Firefox降级到36.0
  • 它与Selenium 2.53.1配合使用效果良好

我希望这能有所帮助

在我们的脚本中,我们将把它放在哪里?它似乎是一个Java解决方案。那么Python/Django解决方案呢?基本相同,只是在Python中使用set_preference():Echoing@jagdpanzer-我们把它放在哪里?这不是一个特别有用的答案,因为代码可能必须在非常特定的地方。代码的最后一行就足够了。其他选项已经由webdriver设置(至少在2.48中)。指责他做任何事也不好。我不确定Elmue的区别,但升级到2.48.1也为我修复了它。这可以通过匹配Selenium和Firefox版本来解决。对于一个人来说,切换到Selenium 2.48而不是另一个人可以解决这个问题的原因是,如果您有不同的Firefox版本。一般来说,您希望在特定Selenium版本的生命周期中至少落后于最新的Firefox 1-2个版本。只是python Selenium 2.48和Firefox 45.0.1存在此问题<代码>pip安装--升级selenium将selenium升级到2.53.1并为我解决了问题。谢谢,我感谢您的回答!这就解决了问题