获取 "Message: h is null"

Getting "Message: h is null"

我最近在使用 selenium 时遇到了以前从未见过的东西。

代码(非常简单明了):

from selenium import webdriver

driver = webdriver.Firefox()
driver.get("http://www.drugs.com/drug-class/laxatives.html?condition_id=&generic=0&sort=rating&order=desc") 

print driver.find_element_by_tag_name("title").text

这是我遇到的错误的堆栈跟踪:

Traceback (most recent call last):
  File "/Users/a/p/SO/selenium_scripts/test.py", line 6, in <module>
    print driver.find_element_by_tag_name("title").text
  File "/Users/a/.virtualenvs/so/lib/python2.7/site-packages/selenium/webdriver/remote/webdriver.py", line 328, in find_element_by_tag_name
    return self.find_element(by=By.TAG_NAME, value=name)
  File "/Users/a/.virtualenvs/so/lib/python2.7/site-packages/selenium/webdriver/remote/webdriver.py", line 664, in find_element
    {'using': by, 'value': value})['value']
  File "/Users/a/.virtualenvs/so/lib/python2.7/site-packages/selenium/webdriver/remote/webdriver.py", line 175, in execute
    self.error_handler.check_response(response)
  File "/Users/a/.virtualenvs/so/lib/python2.7/site-packages/selenium/webdriver/remote/errorhandler.py", line 166, in check_response
    raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.WebDriverException: Message: h is null

使用 Firefox 37.0 和 selenium 2.45.0。


观察:


错误从何而来,我该如何处理 prevent/fix?这是否意味着我不能使用 selenium+firefox 在这个特定网页上 browser/locate 元素?

看起来像 selenium 2.45.0 does not support ff 37

change log 显示 selenium 2.44 支持 FF33。 Selenium 2.45 于 2015 年 2 月 26 日左右发布,而 FF37 于 2015 年 3 月 31 日发布。

看起来在页面加载时它正在执行这行代码并抛出一条错误消息。 尝试使用

等待页面加载
time.sleep(200)

并将这行代码保留在 try 块下:

try:
    WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.CSS_SELECTOR, "table.data-list")))
except:
    print("not found")