我试图使用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。
你能帮帮我们吗?
最诚挚的问候。
答案 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)然后轻松将rowNumber
和columnNumber
传递给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();
经过测试,确实有效。