gpt4 book ai didi

python - 使用 Selenium 从 Firefox 获取 console.log 输出

转载 作者:太空狗 更新时间:2023-10-29 17:34:11 25 4
gpt4 key购买 nike

我正在尝试通过 python Selenium API 绑定(bind)从 Firefox 获取网页的 console.log 输出。基于code for Chrome , 还有一些 advice from the documentation ,我尝试了以下方法:

from selenium import webdriver
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities
d = DesiredCapabilities.FIREFOX
d['loggingPrefs'] = { 'browser':'ALL' }
fp = webdriver.FirefoxProfile()
fp.set_preference('webdriver.log.file', '/tmp/firefox_console')
driver = webdriver.Firefox(capabilities=d,firefox_profile=fp)
driver.set_window_size(1280,1024)
driver.get('http://foo.com')
try:
WebDriverWait(driver,10).until(lambda driver: driver.execute_script("return document.readyState") == "complete")
for entry in driver.get_log('browser'):
print entry
finally:
driver.quit()

但是,即使是调用 console.log("foo") 的简单示例页面,我也没有在返回的日志条目中看到 "foo"通过 API 或在 /tmp/firefox_console 文件中。难道我做错了什么?或者这是 Selenium 的限制?

最佳答案

您的代码在get_log 函数方面是正确的,只需在末尾添加一个print 语句,如下所示:

from selenium import webdriver
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities

# enable browser logging
d = DesiredCapabilities.FIREFOX
d['loggingPrefs'] = {'browser': 'ALL'}
driver = webdriver.Firefox(capabilities=d)
# load some site
driver.get('http://foo.com')
# print messages
for entry in driver.get_log('browser'):
print entry

print

driver.quit()

事实上:

print len(driver.get_log('browser'))

在我的示例中返回 53,并将其作为列表中的示例条目:

{u'timestamp': 1407591650751, u'message': u"Expected ':' but found '}'.  Declaration dropped.", u'level': u'WARNING'}

似乎是一个糟糕的字符问题。至于为什么在/tmp/firefox_console 文件中没有输出,我不知道,记录器似乎抛出一些webdriver 调试信息但没有console.log 输出。

编辑:显然上面的代码没有从console.log 返回数据。据我所知,这不是 Selenium 错误,而是 Firefox 的问题。我设法通过安装 Firebug 来绕过它连同 ConsoleExport Firebug 的插件,然后将它指向某个日志服务器。另见 this SO answer有关如何从 Selenium 以编程方式启用 Firebug 的详细信息。

有关详细信息,请参阅此要点:https://gist.github.com/CGenie/fc63536a8467ae6ef945

关于python - 使用 Selenium 从 Firefox 获取 console.log 输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23231931/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com