当通过远程webdriver使用htmlunit从python脚本获取带有selenium的页面时,我得到以下错误:
WebDriverException: Message: u'TypeError: Cannot find function addEventListener in object [object HTMLDocument]. (https://xxx.xxx.com/static/js/jquery-2.0.3.min.js#4)
所以为了避免这个异常,我试图在初始化我的webdriver时禁用javascript,但是我无法做到。。。在
我试着用webdriver.DesiredCapabilities.HTMLUNIT(vs HTMLUNITWITHJS),但没有任何改变。所以我试图手动定义这些功能,但是没有用。在
以下是我所做的一些例子,结果是:
In [45]: driver = webdriver.Remote(desired_capabilities=webdriver.DesiredCapabilities.HTMLUNIT)
In [46]: driver.desired_capabilities
Out[46]:
{u'browserName': u'htmlunit',
u'cssSelectorsEnabled': True,
u'javascriptEnabled': True,
u'platform': u'LINUX',
u'version': None,
u'webdriver.remote.sessionid': u'3aa1c9c0-9d85-4e22-ad2b-1116950cf86d'}
In [47]: driver = webdriver.Remote(desired_capabilities={'browserName': 'htmlunit', 'javascriptEnabled': False, 'platform': 'ANY', 'version': ''})
In [48]: driver.desired_capabilities
Out[48]:
{u'browserName': u'htmlunit',
u'cssSelectorsEnabled': True,
u'javascriptEnabled': True,
u'platform': u'LINUX',
u'version': None,
u'webdriver.remote.sessionid': u'426aef71-2b7c-45c5-9313-c3dbbec07c7f'}
所以我来了。如果有人知道。。。:)
部分答案,以防其他人遇到同样的问题:
1/看一下服务器日志,selenium服务器实际上考虑了我关于javascriptEnabled设置的说明。客户端显示的所需的“功能字典”不相关。在
2/阅读this discussion,我对javascriptEnabled设置的期望并不是它的目的。这并不会禁用浏览器中的javascript执行,而是禁用来自客户端脚本的javascript“注入”。在
使用HTMLUNIT似乎不可能禁用javascript执行。所以这个问题可以结束,因为它不相关。在
唯一的解决方案是让HTMLUNIT与jquery-2.0.3一起工作。我把它升级到了最新版本,但是没有用。。。在
[编辑]最后找到了一个合适的解决方案here:防止HTMLUNIT对javascript错误引发异常。在
^{pr2}$我现在可以加载我的网址了!:)
相关问题 更多 >
编程相关推荐