昨天使用selenium做自动化测试,发现部分页面会弹出alert对话框,找了写资料,大概的意思就是要给弹出的对话框做出相应,不然,后续的处理会失败。

_driver.SwitchTo().Alert() 这样就可以把当前的handle转到到弹出框,可以进行下一步的处理,如accept,dimsiss ,text等属性,就可以弹出框做处理了。

把代码修改,测试了一下,代码可以执行通过了,欢天喜地的回家了,今天来了之后发现,把测试用例整体跑一下,发现很多testcase 发现出错了。出错了开始找问题,

根据提示no alert open 。既然是没有open,在accept,肯定出错啊,就先加个对象不等null的验证。面向对象第一要务是判断对象是否为空啊。面向对象,没对象没办啊。

吃过饭,又测试了一下,还需要加个扩展放方法,判断是否弹出框出现,有弹出框出现,继续处理。没有的话,就直接跳过。

/// <summary>
/// 判断是否弹框出现
/// </summary>
/// <param name="driver"></param>
/// <returns></returns>
public static bool IsAlertPresent(this IWebDriver driver)
{
try
{
driver.SwitchTo().Alert();
return true;
} // try
catch (NoAlertPresentException Ex)
{
return false;
} // catch
}

使用  if(_driver.IsAlertPresent){

driver.SwitchTo().Alert().Accept;

}

05-27 13:06