Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/357.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使用SeleniumWebDriver进行水平滚动_Java_Selenium_Selenium Webdriver_Scrollbar - Fatal编程技术网

Java 如何使用SeleniumWebDriver进行水平滚动

Java 如何使用SeleniumWebDriver进行水平滚动,java,selenium,selenium-webdriver,scrollbar,Java,Selenium,Selenium Webdriver,Scrollbar,我想在这个屏幕上执行水平滚动 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(2

我想在这个屏幕上执行水平滚动

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);
到目前为止,我的代码运行良好,但我的执行从此停止。

我已经尝试了
操作类的滚动问题,但同样的问题正在被复制

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));
我也尝试过下面的方法,但同样的问题也被复制了

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));
在我的应用程序中,我不能使用此方法,因为
标记中没有可用的
样式
属性

JavascriptExecutor jse = (JavascriptExecutor) driver;     
jse.executeScript("document.getElementById(''twc-scrollabe').setAttribute('style', 'position: relative; top: 0px; left: -658px; width: 1461px;')");
有人能帮我解决这个问题吗?
必须感谢您的帮助。
致以最诚挚的问候,

Jainish Kapadia

只需在下方水平滚动即可

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

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

只需在下面进行水平滚动即可

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

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

如果您需要滚动到特定元素,这适用于水平滚动和垂直滚动

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

如果需要滚动到特定元素,则此选项适用于水平滚动和垂直滚动

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

我怀疑你的
//div[@id='twc-scrollable']/table
指向滚动条。如果您有一些特定的元素需要滚动,比如表格单元格,那么您应该找到该单元格并在其上滚动查看()。不是表格本身,因为它可能已经在视图中。只需将
scrollIntoView
应用到表格的最后一个
th
元素...@M.Prokhorov,但滚动条在表格中,我无法仅定位滚动条。你试过这个吗?当然没有,因为我没有你的代码。我只能从我在这个问题中看到的情况推断,而且我已经知道,您选择了一个
元素,并将其作为一个滚动条,这就导致了这个错误。@Andersson,Thnaks您的提示对我有帮助:)我怀疑您的
//div[@id='twc-scrollable']/table
指向滚动条。如果您有一些特定的元素需要滚动,比如表格单元格,那么您应该找到该单元格并在其上滚动查看()。不是表格本身,因为它可能已经在视图中。只需将
scrollIntoView
应用到表格的最后一个
th
元素...@M.Prokhorov,但滚动条在表格中,我无法仅定位滚动条。你试过这个吗?当然没有,因为我没有你的代码。我只能从我在这个问题中看到的推断出来,而且我已经知道,您选择了一个
元素,并将其作为一个滚动条,这就导致了这个错误。@Andersson,Thnaks您的提示对我有帮助:)我已经完成了这个代码<代码>WebElement horizontal_scroll=driver.findElement(By.xpath(//table[@class='twc-table']/../..//following::th[@id='湿度']);((JavascriptExecutor)driver).executeScript(“参数[0].ScrollingToView(true);”,水平滚动)我已完成此代码<代码>WebElement horizontal_scroll=driver.findElement(By.xpath(//table[@class='twc-table']/../..//following::th[@id='湿度']);((JavascriptExecutor)driver).executeScript(“参数[0].ScrollingToView(true);”,水平滚动)