C# 尝试切换到警报窗口时出现Selenium异常

C# 尝试切换到警报窗口时出现Selenium异常,c#,selenium,internet-explorer,C#,Selenium,Internet Explorer,我有硒的问题。单击“提交”按钮时,将显示确认警报。我需要点击“确定”按钮才能继续 问题是,在我点击提交按钮后,我有以下例外情况: 模态对话框出现 它发生在我尝试获取警报窗口之前 js.ExecuteScript("arguments[0].click();", elementInput); // This line throw the exception IAlert confirmationAlert = _webDriver.SwitchTo().Alert(); confirmationA

我有硒的问题。单击“提交”按钮时,将显示确认警报。我需要点击“确定”按钮才能继续

问题是,在我点击提交按钮后,我有以下例外情况:

模态对话框出现

它发生在我尝试获取警报窗口之前

js.ExecuteScript("arguments[0].click();", elementInput); // This line throw the exception
IAlert confirmationAlert = _webDriver.SwitchTo().Alert();
confirmationAlert.Accept();
堆栈跟踪:

   at OpenQA.Selenium.Remote.RemoteWebDriver.UnpackAndThrowOnError(Response errorResponse) in c:\Projects\webdriver\dotnet\src\webdriver\Remote\RemoteWebDriver.cs:line 1341
   at OpenQA.Selenium.Remote.RemoteWebDriver.Execute(String driverCommandToExecute, Dictionary`2 parameters) in c:\Projects\webdriver\dotnet\src\webdriver\Remote\RemoteWebDriver.cs:line 1112
   at OpenQA.Selenium.Remote.RemoteWebDriver.ExecuteScriptCommand(String script, String commandName, Object[] args) in c:\Projects\webdriver\dotnet\src\webdriver\Remote\RemoteWebDriver.cs:line 1196
   at OpenQA.Selenium.Remote.RemoteWebDriver.ExecuteScript(String script, Object[] args) in c:\Projects\webdriver\dotnet\src\webdriver\Remote\RemoteWebDriver.cs:line 529
   at Kenji.Program.UploadFile(String GTSID, String filePath) in C:\Users\UsrName\Documents\Visual Studio 2015\Projects\Kenji\Kenji\Program.cs:line 213
我使用Internet Explorer 17.713.10586.0和Selenium Dot Net 3.2.0。该应用程序仅与IE兼容


非常感谢

您可以尝试使用selenium类alert接受警报,以接受弹出窗口,而不是使用javascript

WebDriverWait wait = new WebDriverWait(driver, 10);
Alert alert = wait.until(ExpectedConditions.alertIsPresent());
alert.accept();

尝试此操作,而不是切换到警报。假设该警报是当时唯一的活动元素,则应能正常工作。上面的例子是C#。

你不能调用
elementInput.Click()
而不是调用该JavaScript?@rene:不幸的是,没有,element.Click()不能与IE一起使用,因为我使用ExpectedConditions时出现了相同的异常。上述代码应该在web元素的Click事件之后立即编写,之后会出现弹出窗口。不应该有任何itermediate操作,其中可能会应用任何可见性检查来等待页面加载等
driver.SwitchTo().ActiveElement();
System.Windows.Forms.SendKeys.SendWait(@"{ENTER}");