当前位置: 首页 > 面试题库 >

为什么通过selenium切换到警报不稳定?

陶元凯
2023-03-14
问题内容

为什么通过硒切换到警报不稳定?

例如。
1.运行代码,一切顺利。一切顺利。但是,如果这段代码在几分钟内运行,则可能会出现错误。例如,没有元素可以单击。等等。
2.在一个站点上,有一个警报窗口。

alert = driver.switch_to_alert()
alert.dismiss()

所以我关闭了。但是他一直在工作。一切都好,然后是错误。

for al in range(3):
    try:
        alert = driver.switch_to_alert()
        alert.dismiss()
        time.sleep(randint(1, 3))
    except:
        pass

我写了,一切都按预期进行。
但是我认为这并不漂亮。
为什么一切都这么不稳定?
非常感谢你。


问题答案:

根据您的代码块,您需要解决以下两个问题:

  • 切换到警报 :该方法switch_to_alert()弃用 ,应 switch_to.alert 改为使用。API文档明确提及以下内容:

     def switch_to_alert(self):
     """ Deprecated use driver.switch_to.alert
     """
     warnings.warn("use driver.switch_to.alert instead", DeprecationWarning)
     return self._switch_to.alert
    
  • 等待警报是存在 :你应该总是诱导 WebDriverWait警报目前 在调用之前accept()dismiss()如下:

    WebDriverWait(driver, 5).until(EC.alert_is_present).dismiss()
    


 类似资料:
  • 我正在编写一个Python(3.6.6)脚本,它使用Selenium(3.141.0)在Chrome(ChromeDriver版本77.0.3865.40)中打开一个网址,导航一系列菜单,在弹出窗口中输入登录详细信息并登录。这是我的剧本: 如果我手动执行此导航,我会得到一个提示,询问用户名和密码,并有两个按钮用于登录或取消。当Selenium执行此操作时,我看到提示闪烁,但随后很快消失,因此我得到

  • 问题内容: 似乎Hibernate开始在3.5.5版(我们从3.2.7升级)中使用数据类型,而不是使用的属性。 这是造成问题,因为在Oracle数据类型是一个古老的过时的数据类型(参见http://www.orafaq.com/wiki/LONG不应被使用),以及表不能具有一个以上的列作为数据类型。 有谁知道为什么改变了? 我尝试将Oracle 属性设置为true(如[Hibernate>CLOB

  • 问题内容: 我阅读了以下声明: x86体系结构包括一种称为任务状态段(TSS)的特定段类型,用于存储硬件上下文。尽管Linux不使用硬件上下文切换,但是仍然被迫为系统中每个不同的CPU设置一个TSS。 我想知道: Linux为什么不使用硬件支持进行上下文切换? 硬件方法不是比软件方法快得多吗? 是否有任何可以利用硬件上下文切换的操作系统?Windows是否使用它? 最后,一如既往,感谢您的耐心等待

  • 我试图在。ics文件中实现警报()。其思想是,每当在系统中创建指定的记录时,就会发送带有邀请的自动电子邮件。该事件工作正常,它正在发送,我能够添加到日历(谷歌日历和iPhone/Mac日历)。 所以问题是:是谷歌和苹果忽视了这些VALARM组件,还是我做错了什么? 我是否正确理解这个带有动作的警报应该只是在浏览器(谷歌日历)和日历应用程序中向我显示一个弹出窗口? 我的文件正文: null

  • 问题内容: 授权SSL连接有问题。我已经创建了Struts Action,它使用客户端授权的SSL证书连接到外部服务器。在我的操作中,我尝试将一些数据发送到银行服务器,但是没有任何运气,因为由于服务器的原因,我出现以下错误: 我的Action类中的My Method将数据发送到服务器 我的merchant.properties文件: 我第一次以为这是证书问题,我将其从.pfx转换为.jks,但我遇