为了账号安全,请及时绑定邮箱和手机立即绑定

Python Selenium 等待 toast 消息消失

Python Selenium 等待 toast 消息消失

一只斗牛犬 2023-07-11 14:36:10
我有一个页面,单击按钮后页面开始加载,几秒钟后出现一条 toast 消息。在寻呼加载器或 toast 消息消失后,我想单击另一个按钮将我带到另一个页面。在 toast 消息出现之前,有一个页面加载器持续几秒钟(“ajax-disable request-loader...”),代码如下:<div class="footer">    <div class="footer-inner">         <small>Loading time: 0.91898512840271 / Memory usage: 2.77&nbsp;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")知道什么是正确的方法吗?谢谢。
查看完整描述

1 回答

?
大话西游666

TA贡献1817条经验 获得超14个赞

如果您知道toastID,那么正确的方法就是您所做的。


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"))即使是随机的文本,它仍然可以工作。我想这不是它应该如何工作的。


这正是它的工作原理!我们验证没有带有IDas 的元素random!


注意:我添加了等待加载程序消失的时间。


查看完整回答
反对 回复 2023-07-11
  • 1 回答
  • 0 关注
  • 202 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信