我手上有一个棘手的刮痧问题,有很多javascript创建了会话相关的cookie,我试图用selenium绕过这个问题。我正在使用python驱动程序(python-selenium,版本2.2.0-1在debian上)。如果没有从selenium-server-standalone-2.39.0.jar获得的远程驱动程序,浏览器就会启动但无法正常工作(它报告了一些配置文件问题)。使用远程驱动程序一切正常,只是set_preference不起作用(我需要定义一个browser_profile以便能够自动保存一些文件):
profile = webdriver.FirefoxProfile()
profile.set_preference('browser.download.folderList', 2) # custom location
profile.set_preference('browser.download.manager.showWhenStarting', False)
profile.set_preference('browser.download.dir', '/tmp')
profile.set_preference('browser.helperApps.neverAsk.saveToDisk', 'application/pdf')
profile.set_preference('browser.helperApps.neverAsk.saveToDisk', 'application/pdf')
#browser = webdriver.Firefox()
browser = webdriver.Remote(
command_executor='http://127.0.0.1:4444/wd/hub',
desired_capabilities=DesiredCapabilities.FIREFOX, browser_profile=profile)
通过这种方式,不仅打开了带有保存/打开选项的对话框,还检查了:config我没有找到已经设置的confs。 在这个debian上我得到了Iceweasel 24.2.0,但是我也试过用普通的firefox运行ubuntu而没有运气。
关于什么可能是我的问题的任何想法?
答案 0 :(得分:1)
我意识到这有点晚了,但我发现我认为是这个问题的实际答案。
原来那个 profile.set_preference(" browser.download.manager.showWhenStarting",FALSE)
尝试设置FF无法识别的偏好。如果您在普通配置文件中查看about:config,那么该设置就不存在了。至少从FF 35开始。也许它在过去的某个时间,但不再是。
无论如何,这显然足以使修改后的配置文件无效,导致FF拒绝整个事情(或者可能导致Selenium库在将配置文件传递给FF时崩溃):
browser = webdriver.Remote(...,browser_profile = profile)
相关问题:
https://code.google.com/p/selenium/issues/detail?id=7017
我发现删除对set_preference设置的调用允许修改后的配置文件生效。
我的初步结论是,修改后的配置文件必须只有FF能够理解的修改。
答案 1 :(得分:0)
您可以进行所需的设置并永久保存个人资料吗?然后,您可以加载此配置文件,而无需set_preference。
编辑: 另请参阅Python - Remote Webdriver with Extension installed in it
答案 2 :(得分:0)
此案例的解决方案here 没有采用该配置文件的原因。我们需要通知firefox更新新的配置文件。