为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

DIEA 2023-06-28 15:59:52
我有这个功能,我试图向下滚动页面并单击链接。我已将代码放入 for 循环中,因为我想打开多个选项卡。我试图单击的链接不在窗口视图中,它们位于所有网页通用的页脚中。我的方法应该向下滚动,直到要单击的链接可见,然后按住 Control 键并单击并打开一个新选项卡。该方法在 Chrome 和 Internet Explorer 浏览器中运行良好,但在 Firefox 中失败,提示要单击的链接不存在。我认为尽管我放置了向下滚动的代码,但它并没有向下滚动。请帮忙。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);}
查看完整描述

1 回答

?
牛魔王的故事

TA贡献1830条经验 获得超3个赞

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


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);

}


查看完整回答
反对 回复 2023-06-28
  • 1 回答
  • 0 关注
  • 127 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信