【问题标题】:Mouse scroll down using Selenium WebDriver (a.k.a. Selenium 2.0) - JAVA使用 Selenium WebDriver (a.k.a. Selenium 2.0) 向下滚动鼠标 - JAVA
【发布时间】:2014-10-11 08:23:45
【问题描述】:
我正在尝试在我的自动化测试(selenium webdriver)中进行鼠标滚动。我的页面有大量数据,加载所有数据需要时间。
我的要求:
我有一个带有一组数据的合并表,其中这些记录从我页面底部显示的一组值中显示出来。
我正在验证两个值是否相等,因为我需要完全滚动页面才能评估相同。
我使用了以下代码:
Javascript jse = (Javascript)driver;
jse.executescript("scroll(0, 9000)");
这无助于它只滚动了一半的数据,所以我的测试失败了。
请提出建议...
【问题讨论】:
标签:
java
selenium-webdriver
【解决方案1】:
我们可以使用 JavascriptExecutor 来实现这一点。下面是一个从上到下滚动页面的例子:
WebDriver driver = new ChromeDriver();
driver.get("http://stackoverflow.com/questions/25363023/mouse-scroll-down-using-selenium-webdriver-2-0-java");
JavascriptExecutor jse = (JavascriptExecutor) driver;
jse.executeScript("window.scrollTo(0,document.body.scrollHeight);");
要使用上述代码,请导入以下实用程序:
import org.openqa.selenium.JavascriptExecutor;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
让我知道这是否有帮助!
【解决方案2】:
使用这些导入:
import org.openqa.selenium.JavascriptExecutor;
import org.openqa.selenium.WebDriver;
鼠标向下滚动:
JavascriptExecutor Scrool = (JavascriptExecutor) driver;
Scrool.executeScript("window.scrollBy(0,300)", "");
driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
滚动后可以找到元素:
driver.findElement(By.xpath(""));
鼠标向上滚动:
JavascriptExecutor Scrool = (JavascriptExecutor) driver;
Scrool.executeScript("window.scrollBy(0,-300)", "");
【解决方案3】:
对我有用的另一件事是浏览器可访问性和 TAB 按钮。如您所知,通过发送 TAB,您可以浏览页面,只要您知道需要执行多少次才能到达您想要的位置。您也可以尝试单击向上/向下箭头:
1.Element.SendKeys(OpenQA.Selenium.Keys.ArrowUp);
2. char u = '\uE013'; // ASCII code for ArrowUp
char d = '\u0x50'; // code for ArrowDown
Element.SendKeys(Convert.ToString(u));