对于Python,获取WebDriverException:Message:u';[JavaScript错误:“e为空”;
我遇到了一个场景,似乎只有在某些条件下才能在Firefox上失败对于Python,获取WebDriverException:Message:u';[JavaScript错误:“e为空”;,javascript,python,firefox,selenium,selenium-webdriver,Javascript,Python,Firefox,Selenium,Selenium Webdriver,我遇到了一个场景,似乎只有在某些条件下才能在Firefox上失败 driver.get(url('/Points/Inputs/')) assertRowTrue(driver, 2, 11, "True") 我收到了错误 E WebDriverException: Message: u'[JavaScript Error: "e is null" {file: "file:///tmp/anonymous7279155570809486473webdri
driver.get(url('/Points/Inputs/'))
assertRowTrue(driver, 2, 11, "True")
我收到了错误
E WebDriverException: Message: u'[JavaScript Error: "e is null" {file:
"file:///tmp/anonymous7279155570809486473webdriver-profile/extensions/fxdriver@
googlecode.com/components/command-processor.js" line: 7854}]\'[JavaScript Error:
"e is null" {file: "file:///tmp/anonymous7279155570809486473webdriver-profile/e
xtensions/fxdriver@googlecode.com/components/command-processor.js" line: 7854}]\
' when calling method: [nsICommandProcessor::execute]\nBuild info: version: \'2.
43.0\', revision: \'597b76b\', time: \'2014-09-09 20:52:14\'\nSystem info: host:
\'8efca6f08729\', ip: \'172.17.0.3\', os.name: \'Linux\', os.arch: \'amd64\', o
s.version: \'3.13.0-24-generic\', java.version: \'1.7.0_65\'\nDriver info: drive
r.version: unknown' ; Screenshot: available via screen
环顾四周,在前面的问题中提到并解释了这个问题。我的特定场景的问题是它不是警报的结果,所以当我尝试关闭警报时
driver.switch_to_alert().dismiss()
…我收到一个NoAlertPresentException
在Selenium着手解决此问题之前,如果警报不是罪魁祸首,是否有办法避免此错误
更新(2015年6月6日)
尝试下面列出的答案有一段时间有效,但返回到我看到的原始错误。下面是一个失败的测试示例
Hey@alecxc。下面是一个失败的示例。我访问一个特定的网页,以验证[表中]的一行是否包含我希望它包含的信息。为此,我使用了自己的定义assertRowTrue()
assertRowTrue(驱动程序,2,11,“联机”)
这个def,我已经创建了代码
def assertRowTrue(driver, row, column, value):
try:
WebDriverWait(driver, 30).until(
expected_conditions.text_to_be_present_in_element((By.XPATH, "//tr["+str(row)+"]/td["+str(column)+"]/div"), value)
)
except TimeoutException:
raise Exception("ERROR : VALUE NOT EQUAL TO EXPECTED VALUE \""+value+"\". ACTUAL VALUE: ", driver.find_element_by_xpath("//tr["+str(row)+"]/td["+str(column)+"]/div").text)
…其中,行和列指向表中的位置&值表示期望值。在Firefox上,它在期望值条件()下失败部分代码。但是,Chrome运行此代码时没有任何错误。您遇到了
selenium
2.43和firefox
36之间的兼容性问题
现在最简单的选择是将selenium升级到2.45:
pip install --upgrade selenium
您使用的是哪一个firefox版本?Mozilla firefox 36.0I曾经遇到一个问题,错误是由出现在
quit()时的警报引起的
正在执行。我实际上看不到警报,因为一切都发生得太快。我添加了关闭警报的代码,但后来发现有时此代码执行得太快:警报是异步创建的,但dislose()
有时会在警报存在之前执行。检查您是否正处于比赛状态的快速方法是在驾驶员之前添加时间。睡眠()
。切换到\u警报()。解除()
。我成功地将selenium升级到2.45,但当我运行测试场景时,它仍然失败,并显示相同的错误消息。@rwbyrd在我删除答案之前,只需快速检查一下:尝试将firefox降级到34.0.5。抱歉,现在引发了很多火灾。我明天将尝试此功能,并返回给您。嘿@alecxe。我刚刚完成了此操作一次尝试&解决了问题。将selenium升级并将Firefox降级到34.0.5的组合使相关测试成功运行。我提到过你很棒吗?谢谢你的帮助!嘿@alecxe,我今天早上又遇到了这个问题。我尝试使用36,然后降级到34.0.5,问题仍然存在。问题之一在这再次发生之前发生的变化是Windows 7在过去几天中安装了一些下载。有什么建议吗?