有人知道如何等到页面加载?我尝试了所有可能的变种,我发现在网上,但只是不工作。
我需要在触发click()命令后等待,web服务器上有一些内部脚本,这些脚本会进行傻瓜式检查,例如(我排除导入所需模块的代码,并使用标准命名约定):
WebDriverWait(browser, 10).until(lambda d: d.find_element_by_id(the_id))
或者
browser.implicitly_wait(10)
或者
elem2=wait.until(EC.presence_of_element_located((By.ID,the_id)))
上述所有检查都不起作用,因为即使页面仍在加载,它们也会返回True。这会导致我正在读取的文本不完整,因为在click()命令之后页面未完全加载。在python中,命令clickAndWait似乎不可用(但同样,它可能无法解决问题,因为其他测试也会失败)。理想情况下,会有一个命令等待整个web页面被加载(不管页面的某个特定元素如何)。
我设法通过在循环中手动插入一个time.sleep(5)来解决这个问题,但这是次优的,因为它可能会减慢整个过程。如果可能的话,最好只等严格要求的时间。
泰铢
这是我用过的版本:
函数的第一行是一般等待。第二个是期望的条件,它试图找到一个您知道存在于页面上的元素。您可以更改它,以便它代替Xpath执行CSS_选择器、名称、ID、类等操作。还有许多其他操作,但您必须查阅预期条件文档。希望这对我有帮助,当我想出来的时候。
基本上,如果页面是由JavaScript生成的,那么就无法判断它何时“完成”了加载。
然而。我通常尝试检索一个页面元素,捕捉异常并继续尝试,直到达到超时。我还可以检查元素是否可见,而不仅仅是存在的。
必须有一些DOM元素的可见性可用于测试页是否已“完成”加载。在我的测试用例中,我通常有一个
wait_for_element_visibility
,和wait_for_element_presence
函数。get_via_css
是我自己的函数之一,但我希望它非常清楚它在做什么。相关问题 更多 >
编程相关推荐