我尝试使用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) 然后轻松将 rowNumber
和 columnNumber
传递给 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/