首先,我想说我3天前开始编程。所以我几乎是初学者。除了在这里提出的内容外,我不打算进行编程,我现在只需要一个简单的程序,我想一个人自己做,纯粹是作为一种爱好。我正在使用硒和爪哇。因此,我需要一个代码,该代码将尽可能多地向Web浏览器中的Web应用程序滚动/滚动。我目前正在使用此代码:
JavascriptExecutor js = (JavascriptExecutor) driver;
js.executeScript ("window.scrollBy (0.1500)", "");
还可以,但是此代码看起来像按下页面下的按钮而不是滚动。
之后,我想做以下操作:
js.executeScript ("window.scrollBy (0.50)", "");
js.executeScript ("window.scrollBy (0.30)", "");
js.executeScript ("window.scrollBy (0.33)", "");
js.executeScript ("window.scrollBy (0.42)", "");
js.executeScript ("window.scrollBy (0.45)", "");
js.executeScript ("window.scrollBy (0.24)", "");
js.executeScript ("window.scrollBy (0.19)", "");
js.executeScript ("window.scrollBy (0.50)", "");
因此,现在此代码像使用滚动轮一样用鼠标滚动来向下滚动页面,但是如您所见,它看起来不像是"优雅"的解决方案,我敢肯定有更好的东西我3天的经验这是我能做的最好的。
所以,是否有人愿意帮助我更有效的代码,而不是使用数百万行来执行相同的重复工作……我不知道,类似:
js.executeScript ("window.scrollBy (0,50,45,66,78,43,56,87)", "");
在一行和几个变量中,该程序可以执行需要完成的操作,并在" 0,50,45,666,78,43,56,87(滚动的时间间隔和/或像素"
尝试在 executeScript()
方法中实现 arguments[0].scrollIntoView(true);
。
如果要向下滚动到最后一个,请选择 FOOTER
作为目标元素。
WebElement elem = driver.findElement(By.id("ID OF FOOTER ELEMENT"));
JavascriptExecutor js = (JavascriptExecutor) driver;
js.executeScript("arguments[0].scrollIntoView(true);", elem);
如果ID不可用,则可以使用By.className("CLASSNAME OF FOOTER ELEMENT")
或By.xpath("XPATH SELECTOR OF FOOTER")
或By.cssSelector("CSS SELECTOR OF FOOTER")
。
注意:您可以滚动到定位目标元素选择器的任何位置。
首先让我们使用array
存储您的coordinates
或values
。
JavaScript数组
一个数组可以在一个名称下容纳许多值,您可以访问 通过遵循此简单语法的索引编号来引用这些值:
var array_name = [item1, item2, ...];
对于您的示例,可能看起来像这样:
var values = [0.50, 0.33, 0.33, 0.42, 0.45, 0.24, 0.19, 0.50];
现在,您可以为滚动创建自己的function
,该滚动使用上面创建的array
中存储的所有值。结合一个循环,这将重复。
function scrollFunction() {
// Creating our needed variables
var values, vLength, I;
// Filling the array
values = [0.50, 0.33, 0.33, 0.42, 0.45, 0.24, 0.19, 0.50];
vLength = values;
// By using this for-loop this process will repeat with with all of the variables from the array. However the next value is used, not the same one every time!
for (i = 0; i < vLength; i++) {
window.scrollBy (values[i], ""); // Update: deleted one ")"
}
}
要创建平滑的滚动效果,我建议以不同的方式使用滚动功能:
window.scrollBy({ top: values[i], left: 0, behavior: 'smooth' });