如何使硒滚动查看元素的能力



嘿,我有一个关于硒的问题 我有一个很长的表单,我想向下滚动一点以输入数据。 我不希望它一直滚动到显示元素为止。

我使用了以下代码:

WebElement element = driver.findElement(locator);
JavascriptExecutor js = (JavascriptExecutor) driver; 
js.executeScript("arguments[0].scrollIntoView();", element);

它不起作用,因为硒滚动以匹配,他们的一种方式将滚动到此元素,因此我可以向其输入数据,例如滚动直到元素在屏幕的模组中。 我不知道滚动到视图的目的是什么,如果它是滚动而不是查看 问候

如果您的用例是...向下滚动一点以输入数据...您可以通过多种方式实现此目的:

  • 您可以诱导WebDriverWaitelementToBeClickable(),该将自动在视口中滚动所需的元素,如下所示:

    new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(driver.findElement(locator))).sendKeys("Bastian");
    
  • 您也可以将类方法moveToElement()sendKeys()结合使用Actions,这也将自动在视口中滚动所需的元素,如下所示:

    new Actions(driver).moveToElement(driver.findElement(locator)).sendKeys("Bastian").build().perform();
    
  • 您仍然可以使用scrollIntoView()方法先滚动元素,然后诱导WebDriverWaitelementToBeClickable(),如下所示:

    ((JavascriptExecutor) driver).executeScript("arguments[0].scrollIntoView();", driver.findElement(locator));
    new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(driver.findElement(locator))).sendKeys("Bastian");
    
  • 您还可以使用scrollBy()方法向下滚动一定数量的xy-coord(调整(,如下所示,然后找到该元素:

    ((JavascriptExecutor) driver).executeScript("window.scrollBy(0,400)");
    new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(driver.findElement(locator))).sendKeys("Bastian");
    

引用

您可以在以下位置找到一些相关的讨论:

  • 如何向上滚动到一个元素并单击硒?
  • 使用 Selenium 在 Python 中滚动到页面顶部
  • 硒蟒错误:元素无法滚动到视图中

请尝试这个。它对我有用。

public void scrollElementToCenter(WebElement element) {
try {
if (EnvironmentConstants.RUNNING_ON_CHROME) {
((JavascriptExecutor) driver)
.executeScript("arguments[0].scrollIntoView({behavior: "auto", block: "center", inline: "nearest"});", element);
} else {
((JavascriptExecutor) driver).executeScript("arguments[0].scrollIntoView(false);", element);
}
} catch (UnsupportedOperationException exception) {
//LOGGER.error("UnsupportedOperationException occurred : " + exception.getMessage(), exception);
}
}

对于Chrome浏览器,您可以使用它

((JavascriptExecutor) driver)
.executeScript("arguments[0].scrollIntoView({behavior: "auto", block: "center", inline: "nearest"});", element);

这是我创造的,似乎对我有用。

for i in range(5000):
browse = "window.scrollTo(0," + str(i) + ")"
browser.execute_script(browse)
i = i + 400

它几乎滚动缓慢,因此页面上的每个元素都被加载。

相关内容

  • 没有找到相关文章

最新更新