我已经完成了一个项目,其中我显示了一个名称列表及其相应的超链接,每个超链接文本都不同,所以它看起来像这样,
使用以下代码行,我可以获得所需的元素
arg1 = "http://somesite.com/name3"
WebElement urlElement = driver.findElement("//a[contains(text(), '" + arg1 + "')]");
有了这个,我确实得到了urlElement。现在当我点击urlElement时,
urlElement.click();
我期待它打开窗口,以便稍后链接,我可以打电话,
driver.switchTo().window("opened window title")
我期待这个工作,但由于某种原因它没有说明这些不是那个标题的窗口。
答案 0 :(得分:1)
urlElement.click();
Set<String> winids = driver.getWindowHandles();
System.out.println("Total number of windows/tabs are:" +winids.size());
String mainWindow = winids.iterator().next();
String childWindow = winids.iterator().next();
System.out.println(mainWindow);
System.out.println(childWindow);
driver.switchTo().window(childWindow);
我希望这对你有用..
它只是在窗口之间切换。你想测试得到窗口的标题,并与预期的窗口标题进行比较
答案 1 :(得分:0)
Use `driver.getWindowHandles()`to get the list of handles and save them in a
列表,使用driver.getWindowHandle()
检查当前句柄,然后使用driver.switchTo().window("other window")
导航到新句柄。
如果您想关闭旧窗口,可以在切换前使用driver.close()
。
答案 2 :(得分:0)
更好的方法是对bool条件的多个切换窗口实例使用相同的方法。这是C#代码,但对任何具有Java知识的人都应该是可读的。
将对象驱动程序的焦点切换到第一个可用的焦点 窗口不等于当前窗口@param closeOldWindow - 如果为真,则关闭上一个窗口
protected void switchWindows( bool closeOldWindow)
{
String currentWindow = Driver.CurrentWindowHandle;
// switch to first window that is not equal to the current window
IReadOnlyCollection<String> handles =Driver.WindowHandles;
String newWindow = handles.FirstOrDefault(handle => currentWindow != handle);
// 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);
}
}