C# Selenium RemoteWebDriver按钮单击方法异常超时,即使已单击该按钮

C# Selenium RemoteWebDriver按钮单击方法异常超时,即使已单击该按钮,c#,selenium,exception-handling,timeout,remotewebdriver,C#,Selenium,Exception Handling,Timeout,Remotewebdriver,我有下面的代码来点击一个按钮。当我调试它时,它会经过Click()行,然后单击按钮(我可以看到一个新窗口如预期的那样弹出)。然而,它只是在那里停留了一分钟,然后返回并出现超时异常。它不会转到下一行代码 而且,这似乎只会发生在这个按钮上,点击后会启动一个新的弹出窗口。页面上的其他按钮似乎很好 提前感谢您的任何见解 var button = DriverFactory.Instance.FindElement(By.Id("ctl07_Customers_OCS_ListForms_btnAddCu

我有下面的代码来点击一个按钮。当我调试它时,它会经过Click()行,然后单击按钮(我可以看到一个新窗口如预期的那样弹出)。然而,它只是在那里停留了一分钟,然后返回并出现超时异常。它不会转到下一行代码

而且,这似乎只会发生在这个按钮上,点击后会启动一个新的弹出窗口。页面上的其他按钮似乎很好

提前感谢您的任何见解

var button = DriverFactory.Instance.FindElement(By.Id("ctl07_Customers_OCS_ListForms_btnAddCustomer"));
button.Click(); // A new pop-up window is opened
// Next line of code - It times out before it can hit the following line
DriverFactory.Instance.SwitchTo().Window(DriverFactory.Instance.WindowHandles.Last());
例外情况详情:

用户代码未处理OpenQA.Selenium.WebDriverException HResult=-2146233088 Message=向远程WebDriver服务器发出的URL HTTP请求在60秒后超时。 Source=WebDriver 堆栈跟踪: 位于OpenQA.Selenium.Remote.HttpCommandExecutor.CreateResponse(WebRequest请求) 在OpenQA.Selenium.Remote.HttpCommandExecutor.Execute(commandcommandtoexecute) 在OpenQA.Selenium.Firefox.FirefoxDriverCommandExecutor.Execute(命令commandToExecute) 在OpenQA.Selenium.Remote.RemoteWebDriver.Execute(stringdrivercommandtoexecute,Dictionary`2参数) 在OpenQA.Selenium.Remote.RemoteWebElement.Click()中 在OCSPortalFramework.Pages.BankPortal.ListFormsPage.ClickAddCustomer()中的C:\Src\EPSQA\Regression\u Portals\OCSPortal\OCSPortalFramework\Pages\BankPortal\ListFormsPage.cs:第25行 在OCSPortalTests.OCS_146710_Add_Customer.OCS_146710_Add_Customer_Test()中的C:\Src\EPSQA\Regression_Portals\OCSPortal\OCSPortalTests\OCS_146710_Add_Customer.cs:第52行 内部异常: HResult=-2146233079 Message=请求已中止:操作已超时。 来源=系统 堆栈跟踪: 在System.Net.HttpWebRequest.GetResponse()中 位于OpenQA.Selenium.Remote.HttpCommandExecutor.CreateResponse(WebRequest请求) 内部异常:


解决这一问题的办法是:

try {
button.click();
thread.sleep(300);
}
catch(Exception e) {
//System.out.println("" +e.getMessage());
}

我尝试了你的两个建议,但这并不重要,因为异常发生在Click()方法之后,因此无法进入下一行。我更新了我的问题以反映这一点。请尝试此处指定的解决方案:我在Click方法(我的Java post C#版本)之后添加了以下行(DriverFactory.Instance.SwitchTo().Window(DriverFactory.Instance.WindowHandles.Last());),但由于Click()方法在命中“切换代码”窗口之前返回异常。请尝试在单击()之前提供睡眠时间;我的意思是
thread.sleep(250)
然后执行
按钮。click()
只需添加try-catch块,它就能工作:例如try{WebElement ele=driver.findelelement(By.Id(“lookupimg”);ele.click();Thread.Sleep(300);}catch(异常e){//Console.WriteLine(e)}并给予睡眠,它就能完美地工作(来源:)