当前位置: 首页 > 知识库问答 >
问题:

Selenium将焦点切换到单击链接后打开的选项卡

姜鹏程
2023-03-14

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

使用selenium,我现在可以找到表行,单击链接,然后打开新的选项卡。问题是我找不到任何方法将焦点切换到新打开的选项卡。我试图获得所有的windowhandle,看看我是否可以切换,但即使在新标签打开后,只有一个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个。所以我无法将焦点切换到新选项卡。有什么办法可以解决这个问题吗?

共有1个答案

邹毅
2023-03-14

为了正确地切换到新打开的选项卡,您需要诱导WebDriverWait来呈现新的选项卡,然后通过for()循环,您需要遍历可用的WindowHandle,并通过以下代码块调用WindowHandle的switchto().window(),它不是上一个选项卡:

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);
    }
}
 类似资料:
  • 您好,我正在使用selenium单击链接,通常使用在线web应用程序。 当我单击打开新选项卡的特定链接并在新打开的选项卡中执行操作时,我会遇到问题。我有以下代码: 之后,网络驱动程序(从我的眼睛)打开到新标签,而我不必调用 所以一切都好。新标签会在WebDrive上打开。当我尝试单击新打开的选项卡上的链接时,我得到一个“无元素”异常,这意味着它找不到我要找的元素。 两个问题: 1) webdriv

  • 打开 Chrome 和新标签页: < br >在Python 2.7.11中使用Selenium,我在chrome中打开了两个选项卡。我可以访问单个选项卡(转到新的URL),但我无法聚焦于选定的选项卡。例如,当我打开一个新标签页时,它会成为焦点。当我使用< code > driver . switch _ to . window(driver . window _ handles[0])选择第一个

  • 所以问题是,selenium在page1中搜索特定的项目。然后它点击它,根据网站的设计,它在一个新的标签中打开page2。如何让selenium跟随单击并在新选项卡上工作? 我虽然使用美丽的汤只是复制从page1的网址,但网站没有显示网址。相反,它显示了获取URL的函数。真的很奇怪,也很混乱。想法?

  • 我正在处理用于Excel VBA的Selenium Basic Wrapper,但是在单击打开新选项卡的按钮时,我无法让Selenium Web驱动程序将焦点切换到打开的新选项卡上,并关闭原始选项卡。我相信使用Java Selenium应该可以实现这一点,但是有没有办法通过excel VBA上的Selenium基本包装来实现呢? 只需要Selenium将焦点切换到新打开的标签上,并关闭旧的/原始的

  • 问题内容: 在这种情况下有人可以帮助我吗: 方案是: 有一个网页,并且仅在新选项卡中打开所有指定的链接。现在,我试图单击新打开的选项卡中的任何一个链接。在下面尝试过,但是只单击了主/第一个选项卡中的一个链接,而不是新选项卡中的链接。 问题答案: 您将需要使用命令来访问第二个选项卡。 在打开第二个选项卡之前-获取打开的选项卡的windowHandle: 然后执行打开第二个选项卡的操作。现在,您需要知