java - 使用 Selenium Web Driver 和 Java 切换到第一个选项卡
问题描述
使用带有 java 的 selenium web 驱动程序,我试图自动化一个功能,我点击一个链接并打开一个新选项卡。我想为第一个选项卡编写一个全局方法,在主测试类中调用它时切换到第二个选项卡。在断言完成后,我有一个单独的方法可以在第二个选项卡上执行断言。我想编写另一个全局方法,当调用它时关闭第二个选项卡并切换回第一个选项卡并在第一个窗口上恢复测试。
我编写了以下方法和测试:
主要测试:
@Test(enabled = true, dataProvider = "TestThis", description = "ClickThere", groups = {"hello" })
public void AttributeValidationOnHelpPage(TestData testData, String Id, String TableName) {
menu.switch(Id);
data = menu.clickData();
data.selectNoneDateRange();
TablePage = data.openTable(TableName);
TablePage.clickAttTab();
menuPage.clickOnHelpPage();
// This method, when called will switch to second tab.
helpPage = menu.switcToHelpPage();
// After swicthing below is the assertions i want to do on the second tab.
Assert.assertTrue(driver.getCurrentUrl().contains("Second page Url."));
String actualValue = helpOnThisPage.getRefTableAttributes();
Assert.assertEquals(actualValue, "Reference Table Attributes", "Reference Table Attributes Missing");
// This method, will close the second tab and switches back to first tab and resumes the test.
helpPage.switchBackTOMainApplication();
}
Global Method for Swicthing to second tab:
public HelpPage switchToHelpPage() {
String originalHandle = driver.getWindowHandle();
try {
TimeUnit.SECONDS.sleep(8);
} catch (InterruptedException ignore) {
}
wait.until(ExpectedConditions.documentReady());
wait.until(ExpectedConditions.isNotLoading());
for (String handle : driver.getWindowHandles()) {
if (!handle.equals(originalHandle)) {
driver.switchTo().window(handle);
}
}
return new HelpPage(driver);
}
Global Method for closing the second tab and swicthing back to first tab.
public boolean switchBackTOMainApplication() {
boolean isValid = false;
String originalHandle = driver.getWindowHandle();
for (String handle : driver.getWindowHandles()) {
if (!handle.equals(originalHandle)) {
driver.switchTo().window(handle);
}
}
driver.close();
driver.switchTo().window(originalHandle);
return isValid;
}
这是我面临的问题。当调用“helpPage.switchBackTOMainApplication()”方法时,它会关闭第一个选项卡而不是切换到它。我需要做任何修改吗,这将关闭第二个选项卡并继续在第一个选项卡上进行测试。
解决方案
当您单击链接时,您应该切换到打开的选项卡并进行验证
public void switchToNextTab() {
ArrayList<String> tab = new ArrayList<>(driver.getWindowHandles());
driver.switchTo().window(tab.get(1));
}
之后,您应该返回主选项卡
public void switchTomainTab() {
ArrayList<String> tab = new ArrayList<>(driver.getWindowHandles());
driver.switchTo().window(tab.get(0));
}
如果您需要关闭打开的选项卡然后返回主选项卡,请使用此选项
public void closeTabAndReturn() {
driver.close();
ArrayList<String> tab = new ArrayList<>(driver.getWindowHandles());
driver.switchTo().window(tab.get(0));
}
推荐阅读
- sql-server - SSRS 报告的固定宽度列格式
- libcurl - libcurl 未在 OpenWrt 上将 POST 请求升级到 HTTP/2
- java - 单击可扩展列表视图中的子项时,如何从资产中获取特定的文本文件
- angular - 在Angular 6中按顺序执行http请求
- c# - 如何创建自定义导航函数 MvvmCross
- python - 类实例的 Python 平方根
- wpf - WPF使用for循环将数据从datagrid插入sql数据库
- javascript - 是否可以在外部脚本页面中安全地移动 Facebook 和 Google 的所有脚本标签?
- git - 管理 github 存储库 - 维护旧的脚本版本
- aws-cli - aws log get-log-events --log-group-name 问题