Czasami, w środku mojego skryptu, moja instancja webdriver będzie po prostu umrzeć!Python selenium webdriver - sterownik nagle "umiera" i nie może wyjść, pobierz current_url, otwórz strony
Odtąd nie mogę powoływać się na żadną z jej metod.
Kilka przykładów:
>>> spsel.driver.current_url
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/local/lib/python2.6/dist-packages/selenium/webdriver/remote/webdriver.py", line 414, in current_url
return self.execute(Command.GET_CURRENT_URL)['value']
File "/usr/local/lib/python2.6/dist-packages/selenium/webdriver/remote/webdriver.py", line 151, in execute
response = self.command_executor.execute(driver_command, params)
File "/usr/local/lib/python2.6/dist-packages/selenium/webdriver/remote/remote_connection.py", line 280, in execute
return self._request(url, method=command_info[0], data=data)
File "/usr/local/lib/python2.6/dist-packages/selenium/webdriver/remote/remote_connection.py", line 321, in _request
response = opener.open(request)
File "/usr/lib/python2.6/urllib2.py", line 391, in open
response = self._open(req, data)
File "/usr/lib/python2.6/urllib2.py", line 409, in _open
'_open', req)
File "/usr/lib/python2.6/urllib2.py", line 369, in _call_chain
result = func(*args)
File "/usr/lib/python2.6/urllib2.py", line 1161, in http_open
return self.do_open(httplib.HTTPConnection, req)
File "/usr/lib/python2.6/urllib2.py", line 1136, in do_open
raise URLError(err)
urllib2.URLError: <urlopen error [Errno 111] Connection refused>
>>> spsel.driver.quit()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/local/lib/python2.6/dist-packages/selenium/webdriver/firefox/webdriver.py", line 55, in quit
RemoteWebDriver.quit(self)
File "/usr/local/lib/python2.6/dist-packages/selenium/webdriver/remote/webdriver.py", line 443, in quit
self.execute(Command.QUIT)
File "/usr/local/lib/python2.6/dist-packages/selenium/webdriver/remote/webdriver.py", line 151, in execute
response = self.command_executor.execute(driver_command, params)
File "/usr/local/lib/python2.6/dist-packages/selenium/webdriver/remote/remote_connection.py", line 280, in execute
return self._request(url, method=command_info[0], data=data)
File "/usr/local/lib/python2.6/dist-packages/selenium/webdriver/remote/remote_connection.py", line 321, in _request
response = opener.open(request)
File "/usr/lib/python2.6/urllib2.py", line 391, in open
response = self._open(req, data)
File "/usr/lib/python2.6/urllib2.py", line 409, in _open
'_open', req)
File "/usr/lib/python2.6/urllib2.py", line 369, in _call_chain
result = func(*args)
File "/usr/lib/python2.6/urllib2.py", line 1161, in http_open
return self.do_open(httplib.HTTPConnection, req)
File "/usr/lib/python2.6/urllib2.py", line 1136, in do_open
raise URLError(err)
urllib2.URLError: <urlopen error [Errno 111] Connection refused>
Wszelkie pomysły, dlaczego to może być przypadek? Jakieś najlepsze rozwiązania dla pokonywania przeszkód?
Mam na myśli od czasu do czasu testowanie na żywo przez driver.current_url
w bloku try, a jeśli zgłasza wyjątek, to ustawienie sterownika na None
, a następnie ponowne utworzenie go ... ale to brzydki hack i ja nie rozumiem, dlaczego jest to potrzebne.
byłoby bardziej sensowne, aby zobaczyć kod serwera WWW, które powinny być sprawdzane przez ten kod. "Odmowa połączenia" wyraźnie stwierdza, że nie ma już nikogo, kto będzie nasłuchiwał, lub istnieje zasada, która powstrzymuje słuchacza od angażowania się ... –
Według działu inżynierii backendu, serwer internetowy działa dobrze i nie rozłącza automatycznie użytkowników . Myślę, że to błąd selenu? –
jaka jest twoja wersja selenowa? jaka przeglądarka? Czy dzieje się to we wszystkich przeglądarkach? Czy jesteś za proxy? Czy Twój adres URL został poprawnie utworzony? – nilesh