大家。
主要问题:我正在使用 Selenium 2 的 Python API,并且想要在空白页面上启动 Firefox 浏览器(即在浏览器启动时不发送任何请求)。我创建了一个 FirefoxProfile 对象并将“browser.startup.page”更改为 0。我第一次使用此配置文件创建 Webdriver 时,它会转到 mozilla.org,但后续 Webdriver 像我预期的那样在空白页面上启动。为什么会发生这种情况以及如何解决它?
第二个问题:当我在解释器中逐行输入下面的代码时,它工作正常,但当我尝试将其作为脚本运行时,它会崩溃。我收到 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 实例的默认设置。适合我的设置 ( old FF defect )
profile.set_preference("browser.startup.homepage_override.mstone", "ignore")
不使用配置文件的简单解决方法是在启动 Firefox 实例后加载空白页面:
driver = webdriver.Firefox()
driver.get("about:blank")
哦,我忘记了第二部分:在脚本中运行代码时出现错误消息是因为当您使用相同的配置文件启动新的 Firefox 实例时,旧的 Firefox 实例仍在运行。关闭旧浏览器窗口需要一些时间。如果您在示例中的最后一行之前添加 5 秒的 sleep ,它也可以通过脚本运行。
很难理解为什么它在我的两台机器上没有这个就可以工作。原因:Iceweasel和Linux Mint的Firefox不显示更新页面。
顺便说一句:很好的发现,启动下一个 Firefox 实例就可以了。
关于python - 更改 Firefox 首选项后,Selenium Firefox Webdriver 不会加载空白页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34552552/