Oto, co próbuję wykonać: i przez większość czasu wykonuję następujące polecenia: Zasadniczo loguję się na stronie internetowej, a następnie czekam, aż klasa znajdzie się w źródle , następnie przetwarzaj kod źródłowy.Wyjątki losowe losowania Selenium bez żadnej wiadomości
Wyjątkiem uzyskać:
Traceback (most recent call last):
File "foo.py", line 495, in <module>
report(login, password)
File "foo.py", line 430, in report
data = bar(login, password)
File "foo.py", line 113, in
ui.WebDriverWait(browser, 10).until(lambda browser: browser.find_elements_by_class_name("the-class-i-want"))
File "/Library/Python/2.7/site-packages/selenium/webdriver/support/wait.py", line 71, in until
raise TimeoutException(message)
selenium.common.exceptions.TimeoutException: Message: ''
Oto kod:
from selenium import webdriver
import contextlib
from selenium.webdriver.common.keys import Keys
import selenium.webdriver.support.ui as ui
from selenium.webdriver.support.wait import WebDriverWait
with contextlib.closing(webdriver.PhantomJS('phantomjs')) as browser:
browser.get('mywebsite')
login_form = browser.find_element_by_id('login-form')
email = browser.find_element_by_name('login')
password = browser.find_element_by_name('password')
email.send_keys(login)
password.send_keys(password)
password.send_keys(Keys.RETURN)
ui.WebDriverWait(browser, 10).until(lambda browser: browser.find_elements_by_class_name("the-class-i-want"))
Próbowałem to zbyt:
wait_count = 0
while wait_count < 6:
print wait_count
ui.WebDriverWait(browser, 10).until(lambda browser: browser.find_elements_by_class_name("the-class-i-want"))
if browser.find_elements_by_class_name("the-class-i-want"):
break
wait_count += 1
uzyskać ten sam wyjątek.
Obecnie próbuję to:
wait_count = 0
while wait_count < 6:
try:
ui.WebDriverWait(browser, 10).until(lambda browser: browser.find_elements_by_class_name("the-class-i-want"))
if browser.find_elements_by_class_name("the-class-i-want"):
break
except:
wait_count += 1
continue
nie mam do punktu, w którym nie udaje, jestem ciągle sprawdzając je.
Niestety to bardzo długo. Ale chciałbym znaleźć pytonowe i czyste rozwiązanie tych losowych limitów czasu.
Kolejne informacje, które mogą pomóc: proces rejestracji jest czasami bardzo długi, ale nawet po kilku minutach oczekiwania wyrzuca wyjątek.
Czy możesz zamieścić pełne informacje o wyjątku? Ponadto, czy jesteś pewien, że określony warunek jest spełniony? (w przeciwnym razie upłynie limit czasu po "10" sekundach) – jadkik94
Post edytowany, przepraszam – nnaelle
Czy możesz spróbować użyć innego WebDrive, w którym rzeczywiście możesz zobaczyć, co dzieje się na stronie? Może po prostu warunek, na który czekasz, nie jest spełniony. – jadkik94