【问题标题】:How to open a new window while clicking on a link using java如何在使用java单击链接时打开新窗口
【发布时间】:2015-10-14 16:48:04
【问题描述】:
if(driver.findElement(By.xpath("xxx")).isDisplayed() != True){
    // if clicked in the above condition is True then it has to be opened in a new window
    driver.findElement(By.xpath("xxx")).click();
}

else {
    System.out.println("element not present -- so it entered the else loop");
}

【问题讨论】:

  • 如果元素有点击动作,当我们点击该元素时,点击会自动打开一个新窗口。

标签: java selenium window webdriver


【解决方案1】:

您可以使用以下代码在新窗口中打开链接:

WebElement link = driver.findElement(By.xpath("your link xpath"));
Actions newwin = new Actions(driver);
newwin.keyDown(Keys.SHIFT).click(link).keyUp(Keys.SHIFT).build().perform();
Thread.sleep(6000);

通常我们按下 SHIFT 键并使用鼠标单击在新窗口中打开链接,我在这里通过 selenium 中的代码做了同样的事情。

【讨论】:

    【解决方案2】:

    你可以使用下面的代码sn-p;只需用你想要的替换定位器,它应该可以工作:

    driver.get("https://www.google.co.in");
    
    Actions act = new Actions(driver);
    act.moveToElement(driver.findElement(By.xpath("//a[.='हिन्दी']"))).contextClick().sendKeys(Keys.DOWN).sendKeys(Keys.DOWN).sendKeys(Keys.ENTER).build().perform();
    

    上面的 sn-p 导航到谷歌站点,然后在这种情况下右键单击相关链接“हिन्दी”,然后使用两次向下键到达“打开”选项在新窗口中链接”,然后发送“Enter”键单击它,然后打开一个新窗口。

    注意:- 这在 Firefox 和 Chrome 中运行良好。如果是 Internet Explorer,您可能需要额外添加一个 sendKeys(keys.DOWN),这应该很好,因为“在新窗口中打开链接”选项位于第三位。请检查 sn-p 更改是否相同,如下:

    act.moveToElement(driver.findElement(By.xpath("//a[.='हिन्दी']"))).contextClick().sendKeys(Keys.DOWN).sendKeys(Keys.DOWN).sendKeys(Keys.DOWN).sendKeys(Keys.ENTER).build().perform();
    

    【讨论】:

      【解决方案3】:

      还有一种方法是注入JS来设置链接的target属性:

      WebElement link = driver.findElement(By.linkText("my link"));
      JavascriptExecutor js = (JavascriptExecutor) driver;
      String script = "return arguments[0].target='_blank'";
      Object result = js.executeScript(script, link);
      link.click();
      

      结果行可能可以忽略,但我发现这更可靠。


      顺便说一句:

      1) 永远不要比较真假。而不是

          if (condition != true)
      

          if (! condition)
      

      2) 不要每次都查找相同的元素。查找一次并保存参考。

      3) 您不能点击未显示的链接。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2010-12-23
        • 2013-08-10
        • 2010-12-01
        • 1970-01-01
        • 2021-12-25
        • 1970-01-01
        • 2013-10-09
        • 1970-01-01
        相关资源
        最近更新 更多