我有同样的问题,由此我C#测试抛出这个错误 - “OpenQA.Selenium.UnhandledAlertException:意外警告开放:{警报文本:你确定吗?}”每个有浏览器生成的预警时间和测试立即生成警报。
在我的测试中,当我尝试删除或编辑测试应用程序中的某些值时,会生成警报。所以,我通过写这段代码解决了这个问题接受的警报;
public void ClickAcceptOnJsAlert()
{
var js = driver as IJavaScriptExecutor;
if (js != null)
{
js.ExecuteScript("window.alert = function(){}");
js.ExecuteScript("window.confirm = function(){return true;}");
}
}
而这段代码拒绝警报;
public void ClickDismissOnJsAlert()
{
var js = driver as IJavaScriptExecutor;
if (js != null)
{
js.ExecuteScript("window.alert = function(){}");
js.ExecuteScript("window.confirm = function(){return false;}");
}
}
但是,要使用这段代码,您需要通过干预来预测警报;例如,如果点击特定的元素生成警报,我这样做是为了接受警报;
ClickAcceptOnJsAlert();
element.Click();
或以下来摆脱警报;
ClickDismissOnJsAlert();
element.Click()
这是我为解决这个问题所做的工作,我希望它也适用于您。