像鼠标滚动的人一样,在爪哇和硒中



首先,我想说我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存储您的coordinatesvalues

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' });

最新更新