实际上,在使用 java 关闭 Selenium Automation 中的当前窗口后,我正在尝试将控件从当前窗口切换到现有窗口。有没有办法做到这一点。我可以控制新打开的窗口,做一些处理并关闭这个。后来我只需要移动到已经存在的浏览器窗口。
6 回答
这是我使用的东西,它检查所有打开的窗口,然后将控制切换到下一个窗口,并带有关闭旧窗口的选项。
protected final void switchWindows(boolean closeOldWindow) {
final WebDriver driver = checkNotNull(getDriver(), "missing WebDriver");
final String currentWindow = driver.getWindowHandle();
checkNotNull(currentWindow);
// switch to first window that is not equal to the current window
String newWindow = null;
for (final String handle : driver.getWindowHandles()) {
if (!currentWindow.equals(handle)) {
newWindow = handle;
break;
}
}
// if there's another window found...
if (newWindow != null) {
if (closeOldWindow) {
// close the current window
driver.close();
}
// ...switch to the new window
driver.switchTo().window(newWindow);
}
}
你可以用这个-
private void handleMultipleWindows(String windowTitle) {
Set<String> windows = driver.getWindowHandles();
for (String window : windows) {
driver.switchTo().window(window);
if (driver.getTitle().contains(windowTitle)) {
return;
}
}
}
我只知道 selenium js webdriver 有一个类似的 apidriver.switchTo().window(windowName)
可以帮助我们移动到另一个窗口。我对 Java API 不太熟悉,但它们都来自几乎相同的调用方式。希望这会对你有所帮助。
我有一个实用方法来切换到所需的窗口,如下所示
public class Utility
{
public static WebDriver getHandleToWindow(String title){
//parentWindowHandle = WebDriverInitialize.getDriver().getWindowHandle(); // save the current window handle.
WebDriver popup = null;
Set<String> windowIterator = WebDriverInitialize.getDriver().getWindowHandles();
System.err.println("No of windows : " + windowIterator.size());
for (String s : windowIterator) {
String windowHandle = s;
popup = WebDriverInitialize.getDriver().switchTo().window(windowHandle);
System.out.println("Window Title : " + popup.getTitle());
System.out.println("Window Url : " + popup.getCurrentUrl());
if (popup.getTitle().equals(title) ){
System.out.println("Selected Window Title : " + popup.getTitle());
return popup;
}
}
System.out.println("Window Title :" + popup.getTitle());
System.out.println();
return popup;
}
}
一旦窗口的标题作为参数传递,它将带您到所需的窗口。在你的情况下,你可以做到。
Webdriver childDriver = Utility.getHandleToWindow("titleOfChildWindow");
然后再次使用相同的方法切换到父窗口
Webdriver parentDriver = Utility.getHandleToWindow("titleOfParentWindow");
此方法在处理多个窗口时有效
请执行以下代码以切换回基本窗口或原始窗口。
String vBaseWindowHandle = driver.getWindowHandle();
Set<String> windows = driver.getWindowHandles();
for(String temp : windows)
{
driver.switchTo().window(temp);
}
// Do code for new window
driver.close();
driver.switchTo().window(vBaseWindowHandle);
有关如何在 selenium 中处理 Windows 和弹出窗口的更多信息,请访问以下 URL。 https://trickyautomationworld.blogspot.in/2018/03/how-to-handle-windows-in-selenium.html https://trickyautomationworld.blogspot.in/2018/03/how-to-handle-popup-in -selenium.html
关闭当前窗口后,您将看到父窗口。要切换回您的父/上一个窗口,您可以使用以下命令,
driver.getUIWindowLocator().switchToFirstWindow();
driver.switchTo().defaultContent();
命令。我认为这对你会有帮助。