当前位置: 首页 > 面试题库 >

Selenium Webdriver无法单击页面外的链接

吴展
2023-03-14
问题内容

Selenium WebDriver出现问题。我尝试单击窗口页面外部的链接(您需要向上滚动才能看到它)。我当前的代码是相当标准的:

menuItem = driver.findElement(By.id("MTP"));
menuItem.click();
// I also tried menuItem.sendKeys(Keys.RETURN);

我知道我可以向上滚动,并且在这种情况下可以使用。但是,如果您有很长的项目列表,则不必知道向下滚动的距离。

有什么方法可以单击页面可见部分之外的链接(但是如果滚动,该链接将可见)?

附带说明,我使用的是Firefox,但我计划也使用IE7 / 8/9和Chrome。

任何帮助将不胜感激。

编辑:恐怕我不能提供源代码,因为我工作的公司不允许这样做,但是我可以提供要单击的链接的代码:

<div class="submenu">
  <div id="MTP">Link title</div>
</div>

当链接可见时,完全相同的代码才起作用,只有当链接不可见时,它才起作用。

Edit2:实际上,很奇怪,它没有引发任何异常,只是转到下一条指令。所以基本上,发生的是:

menuItem = driver.findElement(By.id("MTP")); // no exception
menuItem.click();  // no exception
//... some code ensuring we got to the next page: timeout reached
driver.findElement(By.id("smLH")).click(); // NoSuchElementException, as we're on the wrong page.

问题答案:

实际上可以自动滚动到元素。尽管在这种情况下这不是一个好的解决方案(必须有一种无需滚动即可使其工作的方法),但我将其发布为一种解决方法。我希望有人能提出更好的主意…

public void scrollAndClick(By by)
{
   WebElement element = driver.findElement(by);
   int elementPosition = element.getLocation().getY();
   String js = String.format("window.scroll(0, %s)", elementPosition);
   ((JavascriptExecutor)driver).executeScript(js);
   element.click();
}


 类似资料:
  • 我正在使用selenium网络驱动程序来自动化网页。我的selenium代码没有识别链接。我收到以下错误。 线程“main”组织中出现异常。openqa。硒。NoSuchElementException:没有这样的元素:无法定位元素:{“method”:“xpath”,“selector”:“/html/body/font/font/b/a[2]”(会话信息:chrome=44.0.2403.89

  • 我在Wordpress上有一个旋转木马。我发现我不能在Chrome上点击任何项目链接,但当我使用Safari或Firefox时,它工作得很好。你可以看到我住在这里。我认为这是因为Safari/Firefox中旋转木马的辅助功能无法在项目之间拖动移动,但所有链接都可以工作。

  • 当我运行此代码时,会出现以下错误:- 组织。openqa。硒。StaleElementReferenceException:stale元素引用:元素未附加到页面文档 我也尝试了含蓄的等待,但得到了同样的问题。

  • 问题内容: 今天,我正在尝试测试一个可在Google主页(www.google.co.in)上使用的gmail链接。我能够启动fierfox窗口,并且能够执行将我带到Google主页的第一步,但是在此之后什么都没有发生,我也没有遇到任何运行时错误或日食异常。不知道webdriver发生了什么。我遇到了我已经在stakwave上发布的另一个程序的问题,因此,如果可以,请查看此链接- 为什么我的测试抛

  • 但它不起作用并抛出NoSuchElementException NoSuChelementException:消息:找不到元素:{“Method”:“XPath”,“Selector”:“//A[@href=\”WLSwitchInterFace0.wl\“]”}

  • 我有一些jQuery,可以将定义列表转换为可扩展/可折叠的常见问题列表。 我在整个网站上有几个常见问题的链接,点击它们会将您发送到常见问题页面并展开相关问题,问题是一些常见问题的答案有指向其他问题的链接,而散列链接会跳到相关问题,但不会展开答案。 这是因为jQuery位于$(文档)中。就绪(function(),因此代码仅在页面重新加载后激活?是否需要触发重新加载? CHeers 有关完整代码,请