gpt4 book ai didi

java - Selenium : Why . click() 在这种情况下不起作用&&如何检查按钮是否被单击?

转载 作者:行者123 更新时间:2023-11-30 08:13:55 25 4
gpt4 key购买 nike

标题已编辑:是“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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com