实际上,在使用java关闭Selenium Automation中的当前窗口后,我正试图将控件从当前窗口切换到现有窗口。有没有办法做到这一点。我能够控制新打开的窗口,做一些过程&关闭这个。稍后我只需要移动到已有的浏览器窗口。
答案 0 :(得分:1)
这是我使用的东西,它会检查所有打开的窗口,然后将控制权切换到下一个窗口,并选择关闭旧窗口。
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);
}
}
答案 1 :(得分:0)
我只知道selenium js webdriver有一个类似driver.switchTo().window(windowName)
的api可以帮助我们移动到另一个窗口。我对Java API并不熟悉,但它们都来自几乎相同的调用方式。希望这会对你有所帮助。
答案 2 :(得分:0)
你可以用这个 -
private void handleMultipleWindows(String windowTitle) {
Set<String> windows = driver.getWindowHandles();
for (String window : windows) {
driver.switchTo().window(window);
if (driver.getTitle().contains(windowTitle)) {
return;
}
}
}
答案 3 :(得分:0)
我有一个实用工具方法可以切换到所需的窗口,如下所示
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");
此方法在处理多个窗口时有效[/ p>]
答案 4 :(得分:0)
关闭当前窗口后,您将看到父窗口。 要切换回父/上一个窗口,您可以使用以下命令,
driver.getUIWindowLocator()switchToFirstWindow();
driver.switchTo()defaultContent();
命令。我认为这对你有所帮助。
答案 5 :(得分:0)
请执行以下代码切换回基本窗口或原始窗口。
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