Đây là những gì tôi đang cố gắng làm và hầu hết thời gian tôi thành công: Về cơ bản tôi đang đăng nhập vào một trang web và sau đó đợi một lớp học , sau đó xử lý mã nguồn.Trường hợp ngoại lệ thời gian chờ ngẫu nhiên Selenium mà không có bất kỳ thông báo nào
Ngoại lệ tôi nhận được:
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: ''
Đây là mã:
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"))
Tôi cố gắng này quá:
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
tôi nhận được cùng một ngoại lệ.
Tôi hiện đang cố gắng này:
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
tôi đã không nhận được đến điểm mà nó không thành công, tôi vẫn đang thử nghiệm nó.
Rất tiếc, quá trình này rất dài. Nhưng tôi muốn tìm một giải pháp tự nhiên và sạch sẽ cho những thời gian chờ ngẫu nhiên đó.
Một thông tin khác cũng có thể hữu ích: quá trình đăng nhập đôi khi rất dài, nhưng thậm chí với một vài phút chờ đợi, nó sẽ ném ngoại lệ.
Bạn có thể đăng hoàn toàn truy nguyên ngoại lệ không? Ngoài ra, bạn có chắc chắn điều kiện bạn chỉ định được thỏa mãn không? (nếu không, nó sẽ hết thời gian sau '10' giây) – jadkik94
Bài chỉnh sửa, xin lỗi – nnaelle
Bạn có thể thử sử dụng một WebDriver khác nơi bạn có thể thực sự thấy những gì đang diễn ra trên trang không? Có thể đó chỉ là điều kiện bạn đang chờ đợi không được đáp ứng. – jadkik94