Python Selenium 等到 toast 消息消失
Python Selenium wait until toast message disappears
我有一个页面,点击按钮后页面开始加载,几秒钟后出现提示信息。在 pager-loader 或 toast 消息消失后,我想单击另一个按钮将我带到另一个页面。
在 toast 消息出现之前,页面加载程序会持续几秒钟(“ajax-禁用请求加载程序...”),代码如下:
<div class="footer">
<div class="footer-inner">
<small>Loading time: 0.91898512840271 / Memory usage: 2.77 MB</small>
</div>
<div class="footer-tools">
<span class="go-top">
<i class="fa fa-angle-up"></i>
</span>
</div>
</div>
<!-- END FOOTER -->
<!-- END BODY -->
<div class="ajax-disable request-loader-AX3d868Qh30tNqeQ5KtqqFF" style="position: absolute; left: 20px; top: 137.535px; width: 876px; height: 2850px;"></div>
</body>
</html>
然后带有页面加载器的 div 消失,并在同一位置出现 toast 消息代码,即:
<!-- END FOOTER -->
<!-- END BODY -->
<div id="toast-container" class="toast-top-right">...</div>
</body>
</html>
然后它也消失了。
我的代码如下:
WebDriverWait(driver, 15).until(EC.invisibility_of_element_located((By.ID, "toast-container")))
driver.find_element_by_id("back").click()
我试过了,它没有错误消息,但无论我在 ID ((By.ID, "random123")))
中输入什么文本,即使是随机文本,它仍然有效。我想这不是它应该如何工作的。
我也尝试过,直到消息出现,但随后我收到打印(“未找到 toast 消息”)。
try:
WebDriverWait(driver, 20).until(EC.presence_of_element_located((By.ID, "toast-container")))
except TimeoutException:
print("toast message not found")
知道什么是正确的方法吗?谢谢。
如果您知道 toast
ID,那么正确的方法就是您所做的。
wait = WebDriverWait(driver, 15)
wait.until(EC.invisibility_of_element_located((By.CSS_SELECTOR, "[class^='request-loader']")))
wait.until(EC.invisibility_of_element_located((By.ID, "toast-container")))
driver.find_element_by_id("back").click()
I tried this and it works with no error messages but whatever text I put in the ID ((By.ID, "random123"))
even a random one it still works. And I guess it isn't how it is supposed to work.
这正是它的工作方式!我们验证没有元素 ID
作为 random
!
注意:我添加了一个等待加载程序消失的过程。
我有一个页面,点击按钮后页面开始加载,几秒钟后出现提示信息。在 pager-loader 或 toast 消息消失后,我想单击另一个按钮将我带到另一个页面。
在 toast 消息出现之前,页面加载程序会持续几秒钟(“ajax-禁用请求加载程序...”),代码如下:
<div class="footer">
<div class="footer-inner">
<small>Loading time: 0.91898512840271 / Memory usage: 2.77 MB</small>
</div>
<div class="footer-tools">
<span class="go-top">
<i class="fa fa-angle-up"></i>
</span>
</div>
</div>
<!-- END FOOTER -->
<!-- END BODY -->
<div class="ajax-disable request-loader-AX3d868Qh30tNqeQ5KtqqFF" style="position: absolute; left: 20px; top: 137.535px; width: 876px; height: 2850px;"></div>
</body>
</html>
然后带有页面加载器的 div 消失,并在同一位置出现 toast 消息代码,即:
<!-- END FOOTER -->
<!-- END BODY -->
<div id="toast-container" class="toast-top-right">...</div>
</body>
</html>
然后它也消失了。
我的代码如下:
WebDriverWait(driver, 15).until(EC.invisibility_of_element_located((By.ID, "toast-container")))
driver.find_element_by_id("back").click()
我试过了,它没有错误消息,但无论我在 ID ((By.ID, "random123")))
中输入什么文本,即使是随机文本,它仍然有效。我想这不是它应该如何工作的。
我也尝试过,直到消息出现,但随后我收到打印(“未找到 toast 消息”)。
try:
WebDriverWait(driver, 20).until(EC.presence_of_element_located((By.ID, "toast-container")))
except TimeoutException:
print("toast message not found")
知道什么是正确的方法吗?谢谢。
如果您知道 toast
ID,那么正确的方法就是您所做的。
wait = WebDriverWait(driver, 15)
wait.until(EC.invisibility_of_element_located((By.CSS_SELECTOR, "[class^='request-loader']")))
wait.until(EC.invisibility_of_element_located((By.ID, "toast-container")))
driver.find_element_by_id("back").click()
I tried this and it works with no error messages but whatever text I put in the ID
((By.ID, "random123"))
even a random one it still works. And I guess it isn't how it is supposed to work.
这正是它的工作方式!我们验证没有元素 ID
作为 random
!
注意:我添加了一个等待加载程序消失的过程。