首页 文章

更改Firefox首选项后,Selenium Firefox webdriver将不会加载空白页面

提问于
浏览
2

大家 .

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

第二个问题:当我在解释器中逐行输入时,下面的代码工作正常,但当我尝试将其作为脚本运行时崩溃 . 我得到一个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)

1 回答

  • 2

    设置"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实例在启动具有相同配置文件的新实例时仍在运行 . 关闭旧的浏览器窗口需要一些时间 . 如果在样本的最后一行之前添加5秒的睡眠,它也可以从脚本中运行 .


    在我的两台机器上看到它为什么没有这个工作是很棘手的 . 原因:Iceweasel和Linux Mint的Firefox没有显示更新页面 .

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

相关问题