gpt4 book ai didi

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

转载 作者:IT老高 更新时间:2023-10-28 20:50:06 25 4
gpt4 key购买 nike

我遇到了 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com