我要做的是試圖迭代所有選擇值並獲取一些數據。數據通過AJAX加載,因此頁面不會重新加載 - 表格中的數據正在改變。正如你可以看到我試圖使用明確的等待,但這不起作用 - 選擇值可以是「4」,但表中的信息仍然可以屬於「3」值。我想知道如何確保頁面真的更新?如何檢測頁面是否完全加載到Selenium中?
有一些類似的問題,但我沒有找到合適的解決方案。
for i in range(N):
try:
driver.find_element_by_xpath("//select[@id='search-type']/option[@value='%s']"%i).click()
driver.find_element_by_name("submit").click()
except:
print i
continue
elem = driver.find_element_by_id("my_id")
wait.until(lambda driver: driver.find_element_by_id('search-type').get_attribute("value")==str(i))
if no_results(get_bs_source(driver.page_source)):
print "No results %s"%i
if is_limited(get_bs_source(driver.page_source)):
print "LIMITED %s"%i
data+=get_links_from_current_page(driver)
當然,我可以使用time.sleep(N),但這不是我想要這樣做的方式。
什麼是導致頁面更新?這是一個點擊或?一旦你弄清楚了,找出一種方法來檢測變化?是否有消息發佈在哪裏,指出更新完成,是否有顏色變化等? – JeffC
你能解釋「該頁面是否真正更新」?這是什麼意思**爲您的應用程序**?你怎麼知道? – SiKing
@瀏覽器點擊某個按鈕後 - 表中的頁面數據被更新。我可以看到它,因爲數據發生變化。我認爲有辦法檢查是否有一些網絡活動,或類似的東西。 –