Selenium Java Scroll Bar的部分

时间:2016-07-28 09:53:43

标签: javascript java scroll

我试图使用java中的selenium webdriver向右移动滚动条,以便专注于一个元素来获取屏幕截图,但在尝试了我所知道的一切之后,我无法得到它。

情景如图1所示: sorry for deleting data due to privacy issues

如您所见,滚动位于蓝色矩形

中的元素中

我试过这个:

     JavascriptExecutor js;
     js = (JavascriptExecutor) driver;
     js.executeScript("$(\"#Pagination\").animate({ scrollLeft: \"-50000px\" })");

分页是div id。

你能帮帮我们吗?

最诚挚的问候。

1 个答案:

答案 0 :(得分:1)

使用'OpenQA.Selenium.Interactions.Actions'移动到元素。它应该自动获取元素的位置x,y并滚动到它。

// Initialize instance
Actions action = new Actions(webdriver);

// Find element to focus inside iframe
WebElement we = webdriver.findElement("<find element you wish to focus>");

// Perform move action
action.moveToElement(we).build().perform();

虽然没有经过测试,希望这会有所帮助。

<强>更新

你有两个非常相似的id - “#Pagina t ion”和“#Pagina c ion”。这真令人困惑 此外,您应该考虑将类添加到您拥有数据的行,例如data-row

注意:请确保您正确找到该元素。当您显示表数据时,该元素将是表格单元格,而不是表格本身。

1)在java代码中,您将脚本存储到字符串变量中:

String script = "return $('#Paginacion').find('.data-row').eq(%1$d - 1).find('td').eq(%2$d - 1)";

2)然后轻松将rowNumbercolumnNumber传递给executeScript     方法。
注意:还应添加空检查。

int rowNumber = 1;
int columnNumber = 19;

List<WebElement> webElements = (List<WebElement>)js.executeScript(String.format(script, rowNumber, columnNumber));

3)找到元素后,只需调用moveToElement方法

即可
action.moveToElement((WebElement) webElements.get(0)).build().perform();

经过测试,确实有效。