Selenium Firefox Webdriver 在更改 Firefox 首选项后不会加载空白页



每个人。

主要问题:我正在使用Selenium 2的Python API,并希望在空白页面上启动Firefox浏览器(即,不要在浏览器启动时发送任何请求)。我创建了一个FirefoxProfile对象,并将"browser.startup.page"更改为0。我第一次使用这个配置文件创建网络驱动程序时,它会转到mozilla.org,但随后的网络驱动程序会像我预期的那样在一个空白页面上启动。为什么会发生这种情况,我该如何解决?

第二个问题:当我在解释器中逐行输入时,下面的代码运行良好,但当我试图将其作为脚本运行时会崩溃。我收到一个WebDriverException:"无法加载配置文件。配置文件目录:%s如果您在FirefoxBinary构造函数中指定了一个log_file,请检查它以获取详细信息。"我还收到一个弹出窗口,上面写着"无法加载您的Firefox配置文件。它可能丢失或无法访问。"。如何修复此问题,使其作为脚本运行?

from selenium import webdriver
profile = webdriver.FirefoxProfile()
# Tell the browser to start on a blank page
profile.set_preference('browser.startup.page', 0)
# Start first session (doesn't work)
driver1 = webdriver.Firefox(profile)
driver1.close()
# Start second session (this works)
driver2 = webdriver.Firefox(profile)

设置"browser.startup.page"=0是webdriver实例的默认设置。适用于我的设置(旧FF缺陷)

profile.set_preference("browser.startup.homepage_override.mstone", "ignore")

一个不使用概要文件的单行解决方案是在启动Firefox实例后加载空页面:

driver = webdriver.Firefox()    
driver.get("about:blank")

哦,我忘了第二部分:在脚本中运行代码时的错误消息是,当你用相同的配置文件启动新的Firefox实例时,旧的Firefox实例仍在运行。关闭旧的浏览器窗口需要一些时间。如果在示例的最后一行之前添加5秒的睡眠,那么它也可以从脚本中运行。


很难理解为什么在我的两台机器上都没有这个。原因:Iceweeel和Linux Mint的Firefox没有显示更新页面。

BTW:很好的发现,启动下一个Firefox实例将起作用。

最新更新