我可以使用selenium webdriver在java中通过页面标题在窗口之间切换吗?

n7taea2i  于 2023-01-04  发布在  Java
关注(0)|答案(5)|浏览(167)

找到了与使用getDriver().getWindowHandles()在窗口之间切换并对其进行迭代相关的答案。
但我想知道是否有任何方法可以在使用java的selenium webdriver中使用页面标题在窗口之间切换。
注意:我是Selenium框架的新手

kknvjkwl

kknvjkwl1#

你可以的。

String your_title = "This is the Title";
String currentWindow = driver.getWindowHandle();  //will keep current window to switch back
for(String winHandle : driver.getWindowHandles()){
   if (driver.switchTo().window(winHandle).getTitle().equals(your_title)) {
     //This is the one you're looking for
     break;
   } 
   else {
      driver.switchTo().window(currentWindow);
   } 
}
yzxexxkh

yzxexxkh2#

如果您有想要切换焦点的窗口的确切标题(即窗口顶层<title>标记的确切内容),那么您可以简单地执行以下操作:

driver.switchTo().window("Whatever the title is, as a String");

如果您只有想要切换焦点的窗口的部分标题,那么您应该按照其他答案的建议,通过句柄迭代可用窗口。

z0qdvdin

z0qdvdin3#

引用:在找不到带有标题的窗口时切换回父窗口的代码.

public void switchToParentWindowHandle() {
        driver.switchTo().window(parentWindowHandle);
    }

引用:在找不到具有该标题的窗口时获取原始窗口句柄的代码。

public void getParentWindowHandle() {
        parentWindowHandle = driver.getWindowHandle();
    }

尝试根据窗口标题切换的代码。

private String parentWindowHandle;

    public void switchToWindow(String title) {
        boolean foundWindow = false;
        getParentWindowHandle(); //See above reference

        for (String handle : driver.getWindowHandles()) {
            if (driver.switchTo().window(handle).getTitle().contains(title)) {
                System.out.println("Switched to window with title:" + title);
                foundWindow = true;
                break;
            }
        }
        if (foundWindow) {
            System.out.println("Couldn't find the window with title -> " + title +  "\nSwitching to parent window.");
            switchToParentWindowHandle(); //See above reference
        }
    }
bihw5rsg

bihw5rsg4#

你好,你可以尝试像下面

driver.get("http://www.seleniumhq.com");
// for understanding point please open a new tab
driver.findElement(By.tagName("body")).sendKeys(Keys.CONTROL + "t");
// note new tab title will be blank as we have not opened anything in it.

// Store the current window handle- the parent one
String winHandleBefore = driver.getWindowHandle();
// store all the windows 
Set<String> handle= driver.getWindowHandles();
// iterate over window handles
for(String mywindows : handle){
// store window title
 String myTitle = driver.switchTo().window(mywindows).getTitle();
 // now apply the condition - moving to the window with blank title
  if(myTitle.equals("")){
  // perform some action - as here m openning a new url
  driver.get("http://docs.seleniumhq.org/download/");
}else{
    driver.switchTo().window(winHandleBefore);
}
}

希望这对你要找的东西有帮助。

mzsu5hc0

mzsu5hc05#

如果你正在使用xpath表达式,如下所示:

$x("//*[@id=\"cbenef\"]").click();

click()方法打开一个窗口,你可以切换到带有页面标题的新窗口,标题出现在页眉中,如下所示:

<!DOCTYPE html>
<html>
<head>
  <title>Amazing</title>
</head>
<body>

<h1>Heading</h1>

</body>
</html>

在这种情况下,您可以使用以下命令切换到此窗口:

switchTo().window("Amazing");

相关问题