我要做的是试图迭代所有选择值并获取一些数据。数据通过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
@浏览器点击某个按钮后 - 表中的页面数据被更新。我可以看到它,因为数据发生变化。我认为有办法检查是否有一些网络活动,或类似的东西。 –