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
Java 无限滚动的硒_Java_Selenium_Selenium Webdriver - Fatal编程技术网

Java 无限滚动的硒

Java 无限滚动的硒,java,selenium,selenium-webdriver,Java,Selenium,Selenium Webdriver,我想从一个无休止滚动的网页上获取一些数据(基本上是图片)。要获取数据,我需要单击一个按钮。页面在某些情况下是不同的,有时在5个元素后结束,有时在250个元素后结束。目前,我尝试了以下方法: lastElement = driver.findElement(By.id("picture_id")); WebElement submit_button = driver.findElement(By.xpath("//input[@value='Submit']")); submit_button.c

我想从一个无休止滚动的网页上获取一些数据(基本上是图片)。要获取数据,我需要单击一个按钮。页面在某些情况下是不同的,有时在5个元素后结束,有时在250个元素后结束。目前,我尝试了以下方法:

lastElement = driver.findElement(By.id("picture_id"));
WebElement submit_button = driver.findElement(By.xpath("//input[@value='Submit']"));
submit_button.click();
但是,页面不会刷新

在selenium中处理无休止滚动的正确方法是什么?如何处理页面上的大量元素,特别是如果页面上有一些
重内容
如图片,通常加载速度不是很快


我感谢你的回答

这基本上就是我要做的,通过创建我自己的滚动方法:

import org.openqa.selenium.JavascriptExecutor;
WebDriver driver = new FirefoxDriver();
JavascriptExecutor jse = (JavascriptExecutor)driver;
...
public void scrollDownPage( int pix ) {
    if ( pix <= 0 || pix > 1000 ) pix = 250;
    jse.executeScript("scroll(0, pix)");
}
import org.openqa.selenium.JavascriptExecutor;
WebDriver=newfirefoxdriver();
JavascriptExecutor jse=(JavascriptExecutor)驱动程序;
...
公共无效滚动下载页(int pix){
如果(pix 1000)pix=250;
jse.executeScript(“滚动(0,pix)”;
}

谢谢您的回答!我不明白的是,什么是
pix
,为什么设置为
250
?var-pix是像素的缩写。谢谢你的回答!当我输入
向下滚动10000像素时,页面无法向下滚动那么多。这有关系吗?此外,如果在
10000像素之后仍然有一个元素我想要得到,如何得到它?如果需要滚动到某个元素,或者滚动到第n个元素,那么仍然可以使用javascriptexecutor来实现这一点。我在上面给出的scrollDown方法意味着要多次调用,以迭代方式在页面上向下移动。这完全取决于你想要什么样的行为。。。你可以做任何事。不,如果不能进一步向下滚动,javascript将不会出错。