Firefox webdriver открывает первую страницу запуска все время
Как отключить эту страницу "первый запуск" раз и навсегда для FF?
когда драйвер FF создан, он открывает вкладку с - https://www.mozilla.org/en-US/firefox/42.0/firstrun/learnmore/ и дополнительная вкладка с целевой страницей.
8 ответов
выключить этот раздражающий странице:
в C# с селеном 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);
...и это никогда больше не будет беспокоить вас.
Примечание: один из этих параметров также будет работать. Я использую их вместе, чтобы сделать его пуленепробиваемым.
Ifound решение, отлично работает
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 и Firefox, но не каким-либо одним конкретным номером версии.
вы должны быть 1-2 версии Firefox позади новейших, если ваш WebDriver находится на последней версии. В противном случае откатите версию Firefox еще дальше, если ваш WebDriver старше, или обновите 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>
выше решения не работают, я пробовал их. Что сработало для меня и, вероятно, будет для вас (если вы используете firefox 43 или меньше):
prof.setPreference("xpinstall.signatures.required", false);
prof.setPreference("toolkit.telemetry.reportingpolicy.firstRun", false);
проблемы с 43 и selenium двоякие, значение по умолчанию подписанные расширения (true) и первая страница запуска. Эти линии решают оба вопроса. Они должны быть установлены программно. Если вы попытаетесь установить их в about: config (или непосредственно в prefs.js) это не повлияет на новые браузеры, которые вы открываете с помощью selenium. Это должно быть отметил, что они говорят, что firefox 44 не позволит вам установить подписанную переменную расширений (так что это не будет работать на 44).
Я включаю codeblock из моего теперь рабочего кода, показывающего правильное использование:
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);
Если вы используете selenium webdriver из Capybara / Cucumber, то вы можете изменить url по умолчанию при регистрации драйвера с помощью 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
Я столкнулся с той же проблемой. Мое решение:
- я понизил Firefox до 36.0.
- он отлично работал с селеном 2.53.1.
надеюсь, это поможет. :)