我使用关键字驱动的框架并从DS.java
文件中调用它。我的要求如下:
org.openqa.selenium.NoSuchWindowException: no such window. (Session info: chrome=55.0.2883.87)
(Driver info: chromedriver=2.26.436362 (5476ec6bf7ccbada1734a0cdec7d570bb042aa30),platform=Windows NT 6.1.7601 SP1 x86_64) (WARNING: The server did not provide any stacktrace information)
我已经完成了下面提到的代码,但它对我没用。
(able to get the window handle here: CDwindow-b20d349b-3cb5-42ed-9f77-5229c88d4300)
public static void store_ParentWindow(String TCID,String vTCD,String vKW) throws IOException, InterruptedException, AWTException, BiffException, ParseException{
String parentWindow = driver.getWindowHandle();
DS.envVar.put("parentWindow", parentWindow);
Thread.sleep(5000);
System.out.println(DS.envVar.get("parentWindow"));
}
public static void switch_ParentWindow(String TCID,String vTCD,String vKW) throws IOException, InterruptedException, AWTException, BiffException, ParseException{
driver.close();
String parentWindow = DS.envVar.get("parentWindow");
System.out.println(DS.envVar.get("parentWindow"));
driver.switchTo().window(parentWindow);
driver.switchTo().defaultContent();
Thread.sleep(5000);
}
任何人都可以帮我解决这个问题吗?
答案 0 :(得分:2)
我怀疑控件是在父窗口上,当 driver.close(); 在 switch_ParentWindow 方法中执行时。我建议你,一旦你点击窗口中的URL,就会存储窗口句柄,这会导致打开新窗口,即在步骤2.你可以使用以下代码来实现:
Set<String> handles = driver.getWindowHandles();
Iterator<String> itr = handles.iterator();
String parentWindow = itr.next();
String newWindow = itr.next();
每当您需要关闭新窗口时,首先确保焦点在新窗口上然后关闭它。您可以使用以下代码执行此操作:
driver.switchTo().window(newWindow);
driver.close();
然后,您可以切换到父窗口并继续执行所需的操作。您可以使用以下代码切换到父窗口:
driver.switchTo().window(parentWindow);
如果您有任何疑问,请与我们联系。
答案 1 :(得分:0)
请尝试以下代码。
String winHandleBefore = driver.getWindowHandle();
for(String winHandle : driver.getWindowHandles()) // Switch to new window opened.
{
driver.switchTo().window(winHandle);
}
driver.switchTo().window(winHandleBefore); // move to previously opened window.