【发布时间】:2014-06-06 18:41:54
【问题描述】:
我有一种情况,我必须检查单击链接后是否打开了新选项卡。如果标签打开,我也想检查标题。
有没有人对此有任何想法。
【问题讨论】:
标签: selenium
我有一种情况,我必须检查单击链接后是否打开了新选项卡。如果标签打开,我也想检查标题。
有没有人对此有任何想法。
【问题讨论】:
标签: selenium
尝试切换到新标签页,然后验证页面是否正确。
在 Java 中它可能看起来像:
//get window handlers as list
List<String> browserTabs = new ArrayList<String> (driver.getWindowHandles());
//switch to new tab
driver.switchTo().window(browserTabs .get(1));
//check is it correct page opened or not (e.g. check page's title)
//...
//then close tab and get back
driver.close();
driver.switchTo().window(browserTabs.get(0))
【讨论】:
C# 也一样;这是经过测试的,无论链接是在新选项卡还是新窗口中打开都可以使用。
var browserTabs = driver.WindowHandles;
driver.SwitchTo().Window(browserTabs[1]);
//check is it correct page opened or not (e.g. check page's title or url, etc.)
// ...
//close tab and get back
driver.Close();
driver.SwitchTo().Window(browserTabs[0]);
希望这对遇到此主题的任何人有所帮助。
【讨论】:
使用等待没有打开标签以确保打开新标签
(new WebDriverWait(driver, 30)).until(ExpectedConditions.numberOfWindowsToBe(2));
然后切换到新标签
protected void switchTabsUsingPartOfUrl(String platform) {
String currentHandle = null;
try {
final Set<String> handles = driver.getWindowHandles();
if (handles.size() > 1) {
currentHandle = driver.getWindowHandle();
}
if (currentHandle != null) {
for (final String handle : handles) {
driver.switchTo().window(handle);
if (currentUrl().contains(platform) && !currentHandle.equals(handle)) {
break;
}
}
} else {
for (final String handle : handles) {
driver.switchTo().window(handle);
if (currentUrl().contains(platform)) {
break;
}
}
}
} catch (Exception e) {
System.out.println("Switching tabs failed");
}
}
调用该方法并传递参数一个你想切换到的标签的url子串
driver.getTitle().equals("Title");
然后验证页面标题
【讨论】:
如果您在 Groovy 中进行测试自动化,这将对您有所帮助
def browserTabs = driver.getWindowHandles()
driver.switchTo().window(browserTabs[1])
assert //Validate your new page title//
【讨论】:
您可以使用下面的方法来实现所需的等待,直到标签完全加载。
public static void switchTabs(WebDriver driver, int expectedWindowsCount,int SwitchtoWindow) throws Exception {
(new WebDriverWait(driver, 30)).until(ExpectedConditions.numberOfWindowsToBe(expectedWindowsCount));
ArrayList<String> tabs2 = new ArrayList<String>(driver.getWindowHandles());
driver.switchTo().window(tabs2.get(SwitchtoWindow));
}
该方法将检查有多少活动窗口处理程序可用,并等待所需的处理程序出现,然后切换到选项卡。
【讨论】: