FFでこの「最初の実行」ページを一度だけ無効にする方法は?
FFドライバーが作成されると、- https://www.mozilla.org/en-US/firefox/42.0/firstrun/learnmore/ でタブが開き、ターゲットページで追加のタブが開きます。
この厄介なスタートページをオフにするには:
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つだけでも機能します。私はそれらを一緒に使って防弾にします。
私は解決策を見つけました、うまく動作します
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に変更したところ、問題は解決しました。
これは、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>
C#ソリューション、Selenium WebDriverを2.49.0にアップグレードすると、問題が解決しました。
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
上記のソリューションは動作しません、私はそれらを試しました。 (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);
私は同じ問題に直面しました。私の解決策:
これが役立つことを願っています。 :)