如何使用selenium webdriver进行水平滚动

时间:2017-02-28 11:40:17

标签: java selenium selenium-webdriver scrollbar

我想在此site

上执行水平滚动

1)首先缩小浏览器大小,直到看到表格滚动条。

我已经完成了以下代码片段,但它对我不起作用。

driver.get("https://weather.com/en-IN/weather/5day/l/USID0011:1:US");
Dimension d = new Dimension(521,628);
driver.manage().window().setSize(d);
driver.manage().timeouts().implicitlyWait(25, TimeUnit.SECONDS);

到目前为止,我的代码运作良好,但我的执行从这里开始停止。

我在Action class尝试了这个滚动问题,但同样的问题正在被复制。

Actions act = new Actions(driver);
WebElement horizontal_scroll = driver.findElement(By.xpath("//div[@id='twc-scrollabe']/table"));
act.clickAndHold(horizontal_scroll).moveByOffset(40, 0).release().perform();

我也尝试过以下方法,但同样的问题正在被复制。

WebElement horizontal_scroll = driver.findElement(By.xpath("//div[@id='twc-scrollabe']/table"));
JavascriptExecutor js = (JavascriptExecutor)driver; 
js.executeScript(driver.execute_script("arguments[0].scrollIntoView()", horizontal_scroll));

在我的应用程序中,我无法使用此方法,因为style标记内没有table属性。

JavascriptExecutor jse = (JavascriptExecutor) driver;     
jse.executeScript("document.getElementById(''twc-scrollabe').setAttribute('style', 'position: relative; top: 0px; left: -658px; width: 1461px;')");

有人可以帮我解决这个问题吗? 您的帮助必须得到赞赏 最诚挚的问候,
Jainish Kapadia

2 个答案:

答案 0 :(得分:2)

只需使用下面的水平滚动

JavascriptExecutor jse = (JavascriptExecutor) driver;     
jse.executeScript("document.querySelector('table th:last-child').scrollIntoView();");

这应该允许滚动到表格的最后一列

答案 1 :(得分:0)

如果您需要滚动到特定元素,则此功能可同时用于水平和垂直滚动

public void scrollToElement(WebElement element) {
        JavascriptExecutor javascriptExecutor = (JavascriptExecutor) getDriver();
        javascriptExecutor.executeScript("arguments[0].scrollIntoView(true);", element);
    }