作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
标题已编辑:是“Selenium:如何检查链接是否在新选项卡中打开?”
我需要创建 JUnit 测试,该测试应该检查单击按钮是否会导致在新选项卡中打开某些链接。这样做我遇到了问题:看起来 .click() 没有做它应该做的事情。这是 HTML 片段:
<div class="small-5 column store-btns">
<a class="google_play_btn" target="_blank" href="https://google.com">
<img class="img-responsive"src="/s/img/buy/google_play_btn_blue.svg" alt>
</a>
<a class="app_store_btn" target="_blank" href="https://apple.com/">
<img class="img-responsive"src="/s/img/buy/app_store_btn_blue.svg" alt>
</a>
</div>
已编辑:这是我的简单 JUnit 测试:
@Before
public void SetUp(){
driver = new SafariDriver();
pause = new WebDriverWait(driver, 2000);
}
@After
public void tearDown(){
driver.close();
driver.quit();
}
@Test:
public void testLink() throws InterruptedException{
driver.get("http://linktotestedpage");
WebElement googlePlayButton = pause.until(ExpectedConditions.visibilityOfElementLocated(By.className("google_play_btn")));
googlePlayButton.click();
List<String> browserTabs = new ArrayList<String>(driver.getWindowHandles());
driver.switchTo().window(browserTabs.get(1));
String titleGP = driver.getTitle();
Assert.assertTrue("Failure: link is ok", titleGP.equals("Google"));
我希望在 googlePlayButton.click();
之后打开一个新的 Safari 选项卡,但驱动程序只是退出。我明白了
IndexOutOfBoundsException: Index 1, Size 1
我哪里错了?谢谢。
最佳答案
我会添加一项额外的检查,因为 windowsHandle
是明确无序的,并且不能保证最后一个选项卡是索引 1
的选项卡
String currentHandle = driver.getWindowHandle();
List<String> browserTabs = new ArrayList<String>(driver.getWindowHandles());
for (String handle: browserTabs){
if (handle != currentHandle){
driver.switchTo().window(handle);
//perform addition action as needed;
//when done close the window
driver.close();
driver.switchTo().window(currentHandle);
}
}
String titleGP = driver.getTitle();
注意:我这边未经测试的代码
关于java - Selenium : Why . click() 在这种情况下不起作用&&如何检查按钮是否被单击?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29931911/
我是一名优秀的程序员,十分优秀!