Firefox更新到版本53,我用来阻止Ebay拍卖的Python脚本停止工作。起初它在这里抱怨:
driver.get('https://signin.ebay.com.au/ws/eBayISAPI.dll?SignIn&ru=http%3A%2F%2Fwww.ebay.com.au%2F')
time.sleep(10)
elements = driver.find_elements_by_class_name("fld")
elements[2].send_keys("your-username")
我发现geckodriver 0.15中的send_keys存在已知问题
我将Selenium更新为3.4.2,将gecko更新为0.16。上面的代码再次起作用。好极了!然而,它死了(嘘!):
itemidurl = "http://www.ebay.com.au/itm/" + sys.argv[1] + "?&autorefresh=true"
print itemidurl
driver.get(itemidurl)
确切地说是最后一行,.get
。顺便说一句,您可以替换URL中的任何有效(活动)Ebay项目编号。它给我的错误是:
selenium.common.exceptions.WebDriverException:消息:到达错误页面:about:neterror?e = dnsNotFound& u = http%3A // pics /& c = UTF-8& f = regular& d = Firefox% 20can%E2%80%99吨%20find%第二十条%20server%20AT%20pics。
我不知道这意味着什么!奇怪的是它进入了有问题的页面,但脚本在那时就死了。是什么给了什么?
编辑:让我添加整个错误消息
Traceback (most recent call last):
File "C:/snipr/snipr.py", line 37, in <module>
driver.get(itemidurl)
File "C:\Python27\lib\site-packages\selenium\webdriver\remote\webdriver.py",
line 264, in get self.execute(Command.GET, {'url': url})
File "C:\Python27\lib\site-packages\selenium\webdriver\remote\webdriver.py",
line 252, in execute self.error_handler.check_response(response)
File "C:\Python27\lib\site-
packages\selenium\webdriver\remote\errorhandler.py", line 194, in
check_response raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.WebDriverException: Message: Reached error page:
about:neterror?e=dnsNotFound&u=http%3A//pics/&c=UTF-
8&f=regular&d=Firefox%20can%E2%80%99t%20find%20the%20server%20at%20pics.
似乎错误来自selenium本身,而不是我的代码。帮助!
编辑2:我已使用相同格式的多个易趣网址重现了该错误。您可以尝试使用此方法重现行为:http://www.ebay.com.au/itm/162528324648?&autorefresh=true
我可以通过在完全不同的网站上使用URL来解决错误,这当然会使其在下一步失败。我可以将.get
包裹在try/except
块中并忽略错误,但这并不能解释错误的来源!