将 time.sleep 与 selenium 一起使用(睡眠直到某些东西完全加载)
Using time.sleep with selenium (sleep until something is completly loaded)
我正在尝试找到一种方法,只要加载硒元素就可以休眠。我尝试使用 actionchains 和内置睡眠,您可以在其中定义最大睡眠超时。但是这样做之后,它仍然不是我尝试做的(卡号在第一部分被切断因此输入的卡号无效。然后我添加了 10 秒 time.sleep 间隔解决了然而,问题是,有时它不起作用只是因为它需要更多的时间来加载(可能连接不好)或者睡眠间隔设置得太高导致代码变慢。
我希望它能工作。我为其他人创建了这段代码,这个人遇到了速度太快的问题,而在我这边,一切都完美无缺。
我没有收到任何错误消息,这只是一个问题,我如何在 time.sleep 内实现睡眠,只要元素完全加载就可以。
我试过使用 Webdriverwait,但这并没有起到作用:
WebDriverWait(browser, delay).until(EC.presence_of_element_located((By.ID, 'IdOfMyElement')))
没有等待元素完全加载的预期条件。
我不确切知道您要获取什么,但很可能该元素已加载到 DOM 中,因此即使该元素的内容尚不存在,也满足预期条件。
如果您尝试访问按钮,您可以使用 EC.element_to_be_clickable
.
如果它在您的屏幕上可见,您可以使用 EC.visibility_of_element_located
。
这里的解决方案在于 ExpectedConditions 而不是睡眠时间,如果您将获得内容,那么睡眠时间真的是随机的,而且它会非常慢。
希望对您有所帮助!
我正在尝试找到一种方法,只要加载硒元素就可以休眠。我尝试使用 actionchains 和内置睡眠,您可以在其中定义最大睡眠超时。但是这样做之后,它仍然不是我尝试做的(卡号在第一部分被切断因此输入的卡号无效。然后我添加了 10 秒 time.sleep 间隔解决了然而,问题是,有时它不起作用只是因为它需要更多的时间来加载(可能连接不好)或者睡眠间隔设置得太高导致代码变慢。
我希望它能工作。我为其他人创建了这段代码,这个人遇到了速度太快的问题,而在我这边,一切都完美无缺。
我没有收到任何错误消息,这只是一个问题,我如何在 time.sleep 内实现睡眠,只要元素完全加载就可以。
我试过使用 Webdriverwait,但这并没有起到作用:
WebDriverWait(browser, delay).until(EC.presence_of_element_located((By.ID, 'IdOfMyElement')))
没有等待元素完全加载的预期条件。
我不确切知道您要获取什么,但很可能该元素已加载到 DOM 中,因此即使该元素的内容尚不存在,也满足预期条件。
如果您尝试访问按钮,您可以使用 EC.element_to_be_clickable
.
如果它在您的屏幕上可见,您可以使用 EC.visibility_of_element_located
。
这里的解决方案在于 ExpectedConditions 而不是睡眠时间,如果您将获得内容,那么睡眠时间真的是随机的,而且它会非常慢。
希望对您有所帮助!