我一直在使用selenium(C#)进行自动化测试已经有一段时间了,我最近使用Chrome Driver 2.4升级到版本2.37。在此升级之后,由于某种原因,每次打开的对话框导致测试失败时,异常都是未处理的,这会导致Visual Studio完全冻结,并且测试套件的其余部分不会被执行。
除了尝试避免警报导致测试失败之外,是否有一种防止这种情况发生的好方法?测试它是很好的,所以我不想简单地避开这个问题。在测试失败后,我尝试切换到DefaultContent,这特别是抛出“UnhandledAlertException未处理”的地方:
Driver.SwitchTo().DefaultContent();
它位于try-catch块中,但由于某些奇怪的原因,此异常不会被捕获。
答案 0 :(得分:1)
Driver.SwitchTo().DefaultContent();
用于切换帧。从API引用:
当a时,选择页面上的第一帧或主文档 页面包含iFrame。
您可能想在WebDriver.dll中尝试IAlert
。
例如
try {
// doing your thing
} catch (UnhandledAlertException) {
IAlert alert = driver.SwitchTo().Alert();
Console.WriteLine(alert.Text);
alert.Accept(); // or alert.Dismiss(); depends on your needs
}