在selenium doc中我们可以看到我们必须为等待设置一些超时。 例如:来自该文档的代码
wait = WebDriverWait(driver, 10)
element = wait.until(EC.element_to_be_clickable((By.ID,'someid')))
我想我们总是必须设置一些超时?或者有一些方法会等到所有的AJAX代码都会下载,只有在我们的驱动程序与一些web元素交互之后(我的意思是没有任何固定的超时,它只是加载所有的东西,只有在它开始交互之后)?
答案 0 :(得分:0)
希望这段代码可以帮到你。这就是我解决这个问题的方法。
#Check with jQuery if it has any outstanding ajax
def ajax_complete(self):
try:
return 0 == self.execute_script("return jQuery.active")
except:
pass
#Create a method to wait for ajax to complete
driver.wait_for_ajax = lambda: WebDriverWait(driver, 10).until(ajax_complete, "")
driver.implicitly_wait(30)