gpt4 book ai didi

java - Selenium 将焦点切换到选项卡,单击链接后打开该选项卡

转载 作者:行者123 更新时间:2023-12-02 11:01:52 24 4
gpt4 key购买 nike

出于自动化目的,我正在创建一个在表中查找行的脚本。该行可单击并打开一个新选项卡/地址。

使用 selenium,我现在可以找到表行,单击链接,然后打开新选项卡。问题是我找不到任何方法将焦点切换到新打开的选项卡。我尝试获取所有 windowHandle 并查看是否可以切换,但即使在新选项卡打开后,也只有 1 个 windowHandle。

下面是我的代码:

WebElement tableRow=driver.findElement(By.xpath("/html/body/div[1]/table/tbody/tr[2]"));

JavascriptExecutor js = (JavascriptExecutor) driver;
js.executeScript("arguments[0].click();", tableRow);

ArrayList<String> tabs = new ArrayList<String> (driver.getWindowHandles());
for(String winHandle : driver.getWindowHandles()){
driver.switchTo().window(winHandle);
}

Arraylist 始终包含 1 个单个 windowHandle,而不是 2 个。因此我无法将焦点切换到新选项卡。有什么办法可以解决这个问题吗?

最佳答案

要正确切换到新打开的选项卡,您需要诱导WebDriverWait来呈现新选项卡,然后通过 for() 循环,您需要迭代可用的 WindowHandles 并使用 WindowHandle 调用 switchTo().window()通过以下代码块不是之前的 TAB:

String first_handle = driver.getWindowHandle();
JavascriptExecutor js = (JavascriptExecutor) driver;
js.executeScript("arguments[0].click();", tableRow);
new WebDriverWait(driver,5).until(ExpectedConditions.numberOfWindowsToBe(2));
Set<String> allHandles = driver.getWindowHandles();
for(String winHandle:allHandles)
{
if (!first_handle.equalsIgnoreCase(winHandle)
{
driver.switchTo().window(winHandle);
}
}

关于java - Selenium 将焦点切换到选项卡,单击链接后打开该选项卡,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49031048/

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