在 Firefox 浏览器中打开新选项卡并尝试向下滚动页面并单击 link 失败

Opening a new tab and trying to scroll down the page and clicking on a link fails in Firefox browser

我有这个功能,我试图向下滚动页面并单击 link。我将代码放在 for 循环中,因为我想打开多个选项卡。 我试图点击的 link 不在 window 的视野范围内,它们位于所有网页常见的页脚中。我的方法应该向下滚动直到 link 可见,然后按住 control + 单击并打开一个新选项卡。该方法在 Chrome 和 Internet Explorer 浏览器中运行良好,但在 Firefox 中失败,表示要单击的 link 不存在。尽管我将代码向下滚动,但我认为它没有向下滚动。请帮忙

public static void checkHrefsWithBrowserUrls(List<WebElement> links) 
{
 String parentTab = null;
 String clickOnLink = Keys.chord(Keys.CONTROL, Keys.ENTER);

 log.debug("Checking that the links open the correct url");
 for (WebElement link : links) {
     ((JavascriptExecutor)driver)
        .executeScript("arguments[0].scrollIntoView(true);", link);
     String href = link.getAttribute("href");
     link.sendKeys(clickOnLink);
     WaitUtilities.sleep(1L);
     Iterator<String> handleIterator = driver.getWindowHandles().iterator();

     parentTab = handleIterator.next();

     if(handleIterator.hasNext()) {
         driver.switchTo().window(handleIterator.next());
         WaitUtilities.waitForUrlToBe(url());
         if(!href.equals(url())) {
             log.error("Link(s) opening wrong URL(s): " + url());
         }
         driver.close();
         driver.switchTo().window(parentTab);
     }
 }
 driver.switchTo().window(parentTab);
}

这是处理状态元素问题的伪代码。

public static void checkHrefsWithBrowserUrls(String xpath) 
{
     String parentTab = null;
     String clickOnLink = Keys.chord(Keys.CONTROL, Keys.ENTER);

     log.debug("Checking that the links open the correct url");
     int linksCount = driver.findElements(By.xpath(xpath)).size();
     for (int linkCounter=1; linkCounter=linksCount, linkCounter++) {
         link = driver.findElements(By.xpath(xpath)).get(linkCounter)
         ((JavascriptExecutor)driver)
            .executeScript("arguments[0].scrollIntoView(true);", link);
         String href = link.getAttribute("href");
         link.sendKeys(clickOnLink);
         WaitUtilities.sleep(1L);
         Iterator<String> handleIterator = driver.getWindowHandles().iterator();

         parentTab = handleIterator.next();

         if(handleIterator.hasNext()) {
             driver.switchTo().window(handleIterator.next());
             WaitUtilities.waitForUrlToBe(url());
             if(!href.equals(url())) {
                 log.error("Link(s) opening wrong URL(s): " + url());
          }
          driver.close();
     driver.switchTo().window(parentTab);
    }
   }
   driver.switchTo().window(parentTab);
}