我最近遇到了一些我以前从未见过的东西,而使用selenium
。获取“消息:h为空”
的代码(相当简单明了):
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和硒2.45.0。
观察:
- 如果我切换到
webdriver.Chrome()
- 我没有看到任何错误 - 如果我使用不同的URL,例如
https://google.com
- 我没有看到任何错误 我试图明确等待搜索结果作出任何进一步的行动之前,是可见的,但我仍然得到同样的错误,代码我使用:
from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC driver = webdriver.Firefox() driver.get("http://www.drugs.com/drug-class/laxatives.html?condition_id=&generic=0&sort=rating&order=desc") # wait for the table list to load WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.CSS_SELECTOR, "table.data-list")))
- 它是不容易googleable这可能意味着它的网站特有的,但是,如上所述之前,在Chrome中没有错误
哪里是从哪里来的错误,我能做些什么来防止/修理它?这是否意味着我无法使用selenium + firefox浏览/定位此特定网页上的元素?
是否硒2.45.0甚至支持FF 37?查看更改日志(https://code.google.com/p/selenium/source/browse/java/CHANGELOG),selenium 2.44支持FF33。 Selenium 2.45于2015年2月26日左右发布,而FF37于2015年3月31日发布。 – Amey
@Amey是的,这很合理,我会尝试降级Firefox并报告回来。谢谢! – alecxe
只是提出了一个Firefox兼容性问题,但它看起来像已经被建议。 Firefox与Selenium具有“最佳兼容性”,同时它也是最糟糕的,因为兼容性已经深入到每个版本中。 – aholt