Trang chứa một số dữ liệu (bảng có vài hàng). Có nút 'refresh' để tải lại và vẽ lại một số phần tử trên trang mà không cần tải lại dữ liệu tĩnh (ajax).selenium.common.exceptions.StaleElementReferenceException trong khi làm mới trang
Tôi đang cố tạo thử nghiệm thích hợp cho trang đó, nhưng thỉnh thoảng nhận được StaleElementReferenceException.
Mã của tôi (python):
from selenium import webdriver
browser=webdriver.Firefox()
browser.get('http://mytisite')
browser.implicitly_wait(10)
browser.find_element_by_id('start').click()
while browser.find_element_by_id('status').text!='Done':
browser.find_element_by_id('refresh').click()
for row in browser.find_elements_by_class_name('datarow'):
if not is_correct(row.text):
print "incorrect"
time.sleep(10)
1 của 5 lặp lại thất bại trên đường dây "nếu không muốn nói is_correct (row.text)":
selenium.common.exceptions.StaleElementReferenceException:
Message: u'Element not found in the cache - perhaps the page
has changed since it was looked up' ; Stacktrace: Method
fxdriver.cache.getElementAt threw an error in
resource://fxdriver/modules/web_element_cache.js
vấn đề chính: trang đã có chứa dữ liệu trước đó , vì vậy tôi nhận được cuộc đua giữa làm mới ajax và truy vấn phần tử webdriver của find_elements_by_class_name('datarow')
.
Tôi có thể giải quyết đúng cách cuộc đua giữa làm mới ajax và trình quản trị web? Cảm ơn.
Tôi hiểu ý tưởng chung đằng sau vấn đề cũ, nhưng tôi muốn tìm một số cách tốt đẹp để tránh nó, mà không cần bất tận 'try/except'. –
Thử sử dụng các loại định vị khác. – Hemanth