web-dev-qa-db-ja.com

Firefox Webdriverが常に最初の実行ページを開きます

FFでこの「最初の実行」ページを一度だけ無効にする方法は?

FFドライバーが作成されると、- https://www.mozilla.org/en-US/firefox/42.0/firstrun/learnmore/ でタブが開き、ターゲットページで追加のタブが開きます。

42
divide by zero

この厄介なスタートページをオフにするには:

More protection. The most privacy. Mozilla Firefox firstrun screen

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

...そして、それは二度とあなたを悩ませることはありません。

注:これらの設定の1つだけでも機能します。私はそれらを一緒に使って防弾にします。

23
Elmue

私は解決策を見つけました、うまく動作します

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

私は同じ問題に直面しました。 Seleniumのバージョンを2.48に変更したところ、問題は解決しました。

9
Tanvir Ahmed

これは、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
emery

C#ソリューション、Selenium WebDriverを2.49.0にアップグレードすると、問題が解決しました。

3
Bleeped

Capybara/CucumberのSelenium Webdriverを使用している場合、startup.homepage_welcome_url.additionalを使用してドライバーを登録するときにデフォルトの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
1
Sam3k

上記のソリューションは動作しません、私はそれらを試しました。 (Firefox 43以下を使用している場合)私にとってうまくいき、おそらくあなたにとってうまくいくのは:

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

43とSeleniumの問題は、デフォルトの署名された拡張設定(true)と最初の実行ページの2つです。これらの線は両方を解決します。これらはプログラムで設定する必要があります。 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);  
1
user5766476

私は同じ問題に直面しました。私の解決策:

  • Firefoxを36.0にダウングレードしました。
  • Selenium 2.53.1で問題なく動作しました。

これが役立つことを願っています。 :)

0
Tam Dao