java - Selenium webdriver 无法点击页面外的链接

标签 java selenium scroll click webdriver

我遇到了 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();
}

关于java - Selenium webdriver 无法点击页面外的链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12035023/

相关文章:

python - 我的脚本无法解析复杂网页中的项目

javascript - 重叠时如何滚动div

javascript - 如何使用 CSS/JS 滚动到特定元素

javascript - 单击 DIV 时滚动到顶部?

java - '->'(箭头)在gradle的依赖图中是什么意思?

java - 检查数字是否在特定序列中

css - Selenium Python 我正在尝试使用 XPATH 或 CSS 选择器从嵌套的 span 标记中选择一个下拉列表

java - 线程 "main"java.lang.NoClassDefFoundError : org/apache/commons/csv/CSVFormat 中出现异常

Java:如何对模块的 DAO 和服务进行测试?

java - WebDriver:设置初始 URL