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