一尘不染

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

selenium

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

例如。
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

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


阅读 417

收藏
2020-06-26

共1个答案

一尘不染

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

  • 切换到警报 :该方法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()
    
2020-06-26