2016-05-12 100 views
1

单击按钮时,我有以下代码。当我调试它时,它会通过Click()行,并单击该按钮(我可以看到一个按预期弹出的新窗口)。然而,它只是坐在那里一分钟,然后返回超时例外。它不会转到下一行代码。Selenium RemoteWebDriver按钮即使单击按钮,单击方法异常超时

此外,这似乎只发生这个按钮,点击后弹出一个新的窗口。网页上的其他按钮似乎很好。

在此先感谢您的任何见解!

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 消息= HTTP请求为URL http://localhost:7055/hub/session/5e7fc81a-ed31-4310-9419-f1e5cc0d1b35/element/%7B96a49e56-d619-4765-b0a7-222f69da23bf%7D/click远程服务器的webdriver 60秒后超时。 源= webdriver的 堆栈跟踪: 在OpenQA.Selenium.Remote.HttpCommandExecutor.CreateResponse(WebRequest的请求) 在OpenQA.Selenium.Remote.HttpCommandExecutor.Execute(命令commandToExecute) 在OpenQA.Selenium.Firefox.FirefoxDriverCommandExecutor.Execute(命令commandToExecute) 在OpenQA.Selenium.Remote.RemoteWebDriver.Execute(字符串driverCommandToExecute,Dictionary`2参数) 在OpenQA.Selenium.Remote.RemoteWebElement.Click() 在OCSPortalFramework.Pages.BankPortal.ListFormsPage.ClickAddCustomer(c)中:\ Src \ EPSQA \ Regression_Portals \ OCSPortal \ OCSPortalFramework \ Pages \ BankPortal \ ListFormsPage.cs:line 25 at OCSPortalTests.OCS_146710_Add_Customer.OCS_146710_Add_Customer_Test()in C:\ Sr c \ EPSQA \ Regression_Portals \ OCSPortal \ OCSPortalTests \ OCS_146710_Add_Customer.cs:line 52 InnerException: HResult = -2146233079 Message =请求已中止:操作已超时。 源=系统 堆栈跟踪: 在System.Net.HttpWebRequest.GetResponse() 在OpenQA.Selenium.Remote.HttpCommandExecutor.CreateResponse(WebRequest的请求) 的InnerException:

回答

1

解决方法为这是:

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

我尝试了你的两条建议,但没有关系,因为在Click()方法后发生异常,所以它不会到达下一行。我更新了我的问题以反映这一点。 – AngieM

+0

试试这里指定的解决方案:http://stackoverflow.com/questions/19403949/how-to-handle-pop-up-in-selenium-webdriver-using-java –

+0

我添加了以下行(DriverFactory.Instance.SwitchTo ().Window(DriverFactory.Instance.WindowHandles.Last());)在Click方法之后(我的Java post的C#版本),但是它并不重要,因为Click()方法在代码之前返回异常切换窗口被击中。 – AngieM