python - Python Selenium 等到 toast 消息消失
问题描述
我有一个页面,单击按钮后页面开始加载,几秒钟后会出现一条 toast 消息。在 pager-loader 或 toast 消息消失后,我想单击另一个按钮,将我带到另一个页面。
在 toast 消息出现之前,页面加载器会持续几秒钟(“ajax-disable request-loader...”),代码如下:
<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")))
即使是随机的,它仍然有效。我想这不是它应该如何工作的。
我也尝试了直到出现消息,但随后我得到了打印(“找不到吐司消息”)。
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()
我试过这个,它没有错误消息,但是我在 ID 中输入的任何文本,
((By.ID, "random123"))
即使是随机的,它仍然有效。我想这不是它应该如何工作的。
这正是它的工作方式!我们验证没有带有ID
as的元素random
!
注意:我添加了等待加载程序消失的时间。
推荐阅读
- python - Python:从特定日期开始的数据框
- mysql - Spring Boot R2DBC 内部 Join 在某些字段中返回 null
- assembly - 增加时遇到困难
- amazon-web-services - XFS 增长不工作——没有分区的磁盘
- jquery - 粘贴事件第一次粘贴时未在列表中加载数据,但之后工作正常
- reactjs - 如何更改验证邮件中`GRAPHQL_AUTH`中的`frontend_domain`端口?
- python - 无法通过 django 中的外键关联创建记录
- reactjs - 用 jest 测试拖放(dnd-kit)
- python - Jupyter笔记本保存检查点的功能
- kotlin - 在 Kotlin 中使用无符号类型