javascript - Selenium Java 滚动条部分

标签 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。

你们能帮我吗?

最诚挚的问候。

最佳答案

使用“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 -“#Pagination”和“#Paginacion”。这真是令人困惑。
另外,您应该考虑向包含数据的行添加类,例如 data-row

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

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

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

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

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

经过测试,有效。

关于javascript - Selenium Java 滚动条部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38632931/

相关文章:

java - org.hibernate.MappingException - 这个异常是什么意思?

java - 仅当对象内部的方法完成时才返回对象

javascript - 如何创建一个固定在屏幕底部但当用户向下滚动时它不再是固定页脚的页脚?

带有 SliverAppBar 的 NestedScrollView 中的 Flutter PageView 主体未隐藏应用栏

java - 对整数进行升序和降序排序

iPhone 开发 - 如何捕获异常 'NSRangeException'

javascript - 应用脚本 : open PDF right after creation

javascript - Nodejs - POST 请求的响应未定义

javascript - 如何在 knockout 中对可观察数组应用多个过滤器

javascript - 我可以从 reduce 函数中的属性名称中删除空格吗?