Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/361.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
Javascript 如何在Java代码中使用chromedriver执行JS命令?_Javascript_Java_Automated Tests_Selenium Chromedriver - Fatal编程技术网

Javascript 如何在Java代码中使用chromedriver执行JS命令?

Javascript 如何在Java代码中使用chromedriver执行JS命令?,javascript,java,automated-tests,selenium-chromedriver,Javascript,Java,Automated Tests,Selenium Chromedriver,我想问一下,如何使用JS命令滚动到网页中。不过,我希望这个JS命令位于Java代码块中。出于上述目的,让我告诉您,我也使用Selenium框架。可能吗 目的是通过使用Selenium和Java来实现。我不关心JavascriptExecutor的一般用法。我想要它们的组合来实现滚动功能 如果我理解正确,您正在尝试在selenium代码中滚动页面。你可以试试这样的 WebDriver driver = new ChromeDriver(); JavascriptExecutor js = (Ja

我想问一下,如何使用JS命令滚动到网页中。不过,我希望这个JS命令位于Java代码块中。出于上述目的,让我告诉您,我也使用Selenium框架。可能吗


目的是通过使用Selenium和Java来实现。我不关心JavascriptExecutor的一般用法。我想要它们的组合来实现滚动功能

如果我理解正确,您正在尝试在selenium代码中滚动页面。你可以试试这样的

WebDriver driver = new ChromeDriver();

JavascriptExecutor js = (JavascriptExecutor) driver;
js.executeScript("window.scrollBy(0,1000)"); //Scroll vertically down by 1000 pixels


让我们知道这对您是如何起作用的。

我想详细回答所有可能的滚动选项,因为这在问题中没有确定。下面我给你们一个实际的和理论的答案。第一个是完成你的工作,第二个是阅读理论以备将来使用,因为这个主题有很多选择

代码示例:

import org.openqa.selenium.JavascriptExecutor; // packet that you need to import

WebDriver driver = new ChromeDriver(); // driver creation

JavascriptExecutor js = (JavascriptExecutor) driver; // giving to your driver the possibility to execute JS commands

js.executeScript("window.scrollBy(2000,1000)", ""); // scroll 2000 for x-coord and 1000 for y-coord
js.executeScript("window.scrollByPages(4)", ""); // scroll down the document by 4 pages
js.executeScript("window.scrollByPages(-4)", ""); // scroll up the document by 4 pages
js.executeScript("window.scrollByLines(10)", ""); // scroll down the document by 10 lines

WebElement toScrollElement = driver.findElement(By.XPATH_OR_ID_OR_OTHER("GIVEN_XPATH_OR_ID_OR_OTHER")); // locate the element you want to scroll into
js.executeScript("arguments[0].scrollIntoView(true);", toScrollElement); // scroll until the given element
理论文档:

import org.openqa.selenium.JavascriptExecutor; // packet that you need to import

WebDriver driver = new ChromeDriver(); // driver creation

JavascriptExecutor js = (JavascriptExecutor) driver; // giving to your driver the possibility to execute JS commands

js.executeScript("window.scrollBy(2000,1000)", ""); // scroll 2000 for x-coord and 1000 for y-coord
js.executeScript("window.scrollByPages(4)", ""); // scroll down the document by 4 pages
js.executeScript("window.scrollByPages(-4)", ""); // scroll up the document by 4 pages
js.executeScript("window.scrollByLines(10)", ""); // scroll down the document by 10 lines

WebElement toScrollElement = driver.findElement(By.XPATH_OR_ID_OR_OTHER("GIVEN_XPATH_OR_ID_OR_OTHER")); // locate the element you want to scroll into
js.executeScript("arguments[0].scrollIntoView(true);", toScrollElement); // scroll until the given element
我个人认为,关于这个主题的官方文档包含在下面的链接中:用于使用窗口选项滚动,以及使用元素选项滚动。我相信其他来源的文件也会更多。我只是向你们介绍我获取信息的来源


另外,JavascriptExecutor还有第二个选项,即
js.executeAsyncScript()。您还可以从中阅读JavascriptExecutor本身的文档。

浏览器不能以本机方式运行Java。你需要一些小程序或Java插件。如果您是在使用JSP的基于Java的web应用程序的上下文中交谈,那么在JSP中使用JavaScript是可能的。您所说的滚动是什么意思的可能重复?滚动多少?直到这一页的结尾?直到一个特定的宽度?直到某个特定元素?您能指定这个吗?@SercanPaspal您上面标记的不是指滚动选项。虽然是指JavascriptExecutor。最后一个问题只是这个问题的一部分,而不是问题本身。“这是我个人的意见。”他说关于硒,所以我猜他在我下面的答案中寻找的是。这只是JavascriptExecutor与Java的交互。感谢您的详细回答。那正是我想要的