目录

(十七)alert confirm 和 prompt

alert confirm prompt

原生的javascript弹出框,各个浏览器的实现不一样,外观也不太一样。

这些弹出框会阻止页面上的所有操作,因此每次这些框弹出来以后,我们必须想办法让这些东西消失掉,否则脚本无法往下进行下去。

一般的处理方式

当alert弹出之后,我们可以通过类似下面的代码去处理alert

driver.switchTo().alert().dismiss();
driver.switchTo().alert().accept();

切换到alert/confirm/prompt之后,我们可以进行如下的后续动作

  • accept(): 接受,点ok
  • dismiss(): 点取消
  • getText(): 拿到提示文本
  • sendKeys( text ): 如果是prompt的话,可以用该方法输入一些内容
  • authenticateAs( username, password ): 如果是basic authentication的话,可以通过该方法来输入用户名和密码

一劳永逸的处理方式

如果我们不在乎alert上提示的内容,只想页面上不弹出alert/confirm/prompt的话,可以通过js来覆盖这些方法的原生实现,从而达到禁用弹出框的效果,比如下面的代码就演示了如何禁用alert。

var banAlert = 'window.alert = function(msg){}'
driver.executeScript(banAlert);

这样在测试过程中,所有的alert都不会弹出。

原始封面

https://images.unsplash.com/photo-1527467779599-34448b3fa6a7?w=300