Wie kann man diese "first run" -Seite ein für alle mal für FF deaktivieren?
Wenn der FF-Treiber erstellt wird, wird der Tab mit - https://www.mozilla.org/en-US/firefox/42.0/firstrun/learnmore/ Und einem zusätzlichen Tab mit Zielseite geöffnet.
So deaktivieren Sie diese nervige Startseite:
in C # mit Selenium 2.48 habe ich folgende Lösung gefunden:
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);
... und es wird dich nie wieder stören.
Hinweis: Eine dieser Einstellungen alleine funktioniert ebenfalls. Ich benutze sie zusammen, um sie kugelsicher zu machen.
Ich habe eine Lösung gefunden, funktioniert gut
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");
Ich habe das gleiche Problem gehabt. Ich habe gerade die Selenium-Version auf 2.48 geändert und das Problem gelöst.
Dies wird durch Inkompatibilität zwischen den Versionen von Selenium und Firefox verursacht, jedoch nicht durch eine bestimmte Versionsnummer.
Sie sollten 1-2 Firefox-Versionen hinter der neuesten sein, wenn Ihr WebDriver auf der neuesten Version ist. Andernfalls rollen Sie die Firefox-Version noch weiter zurück, wenn Ihr WebDriver älter ist, oder aktualisieren Sie den Webdriver.
Um einen älteren Firefox zu erhalten, versuchen Sie https://ftp.mozilla.org/pub/firefox/releases/ oder http://www.oldapps.com/
oder unter Linux, abhängig von Ihrer Distribution
yum list --showduplicates firefox
Sudo yum install firefox-<version>
oder
apt-cache show firefox | grep Version
Sudo apt-get install firefox=<version>
Bei der C # -Lösung wurde ein Upgrade von Selenium WebDriver auf 2.49.0 vorgenommen.
Wenn Sie den Selenium-Treiber von Capybara/Cucumber verwenden, können Sie die Standard-URL ändern, wenn Sie Ihren Treiber mit startup.homepage_welcome_url.additional
registrieren:
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
Die oben genannten Lösungen funktionieren nicht. Ich habe sie ausprobiert. Was für mich funktioniert hat und wahrscheinlich für Sie gilt (wenn Sie Firefox 43 oder weniger verwenden):
prof.setPreference("xpinstall.signatures.required", false);
prof.setPreference("toolkit.telemetry.reportingpolicy.firstRun", false);
Die Probleme mit 43 und Selenium sind zweifach, die Standardeinstellung für signierte Erweiterungen (auf true) und die erste Ausführungsseite. Diese Zeilen lösen beide. Diese müssen programmgesteuert gesetzt werden. Wenn Sie versuchen, sie in about: config (oder direkt in prefs.js) einzurichten, hat dies keine Auswirkungen auf die neuen Browser, die Sie mit Selenium öffnen. Es sollte beachtet werden, dass firefox 44 Ihnen nicht erlaubt, die signierte Erweiterungsvariable festzulegen (so funktioniert dies nicht bei 44).
Ich füge den Codeblock aus meinem jetzt funktionierenden Code hinzu, der die korrekte Verwendung zeigt:
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);
Ich hatte das gleiche Problem ... Meine Lösung:
Ich hoffe diese Hilfe. :)