Python 使用Selenium从Firefox获取console.log输出
我试图通过python Selenium API绑定从Firefox获取网页的Python 使用Selenium从Firefox获取console.log输出,python,firefox,logging,selenium,Python,Firefox,Logging,Selenium,我试图通过python Selenium API绑定从Firefox获取网页的控制台.log输出。基于,和一些,我尝试了以下方法: from selenium import webdriver from selenium.webdriver.common.desired_capabilities import DesiredCapabilities d = DesiredCapabilities.FIREFOX d['loggingPrefs'] = { 'browser':'ALL' }
控制台.log
输出。基于,和一些,我尝试了以下方法:
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”)
的简单示例页面,我也没有在通过API返回的日志条目或/tmp/firefox\u console
文件中看到“foo”
。我做错什么了吗?或者这是硒的限制 对于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\u console
文件中没有输出,我不知道,记录器似乎抛出了一些webdriver调试信息,但没有console.log
输出
编辑:显然上述代码没有从控制台.log返回数据。据我所知,这不是Selenium bug,而是Firefox的问题。我通过为Firebug安装插件,然后将其指向某个日志服务器,从而绕过了这个问题。有关如何从Selenium以编程方式启用Firebug的详细信息,请参见
有关更多详细信息,请参见本要点:实施过程中发生了变化。我还使用了:
d = DesiredCapabilities.FIREFOX
d['loggingPrefs'] = {'browser': 'ALL'}
但现在我使用的是Python3.8、Selenium 3.4,它不再工作/实现了。
看到另一个讨论它的人了吗
否则会出现错误:
selenium.common.exceptions.WebDriverException:消息:loggingPrefs不是已知功能或扩展功能的名称
我不是说我没有从驱动程序获得日志输出,只是我没有获得控制台.log
输出。您是否在驱动程序日志条目中看到console.log
输出?似乎未修补的异常和语法错误被记录为严重异常。这看起来很有希望通过自动测试捕获JS错误。这是供现在来检查答案的人使用的。截至此日期,firefox的驱动程序.get_log(“浏览器”)不起作用。有一个未解决的问题,上面提到的问题已经解决,取而代之的是一个新的问题:-仍然没有解决。但是Firefox65+引入了“devtools.console.stdout.content”首选项,将console.log输出转储到stdout。