【问题标题】:Scroll window until element is loaded in page using selenium/javascript滚动窗口,直到使用 selenium/javascript 在页面中加载元素
【发布时间】:2017-04-01 00:12:25
【问题描述】:

我需要选择向下滚动页面时出现的图像。一组图像在点击页面底部时加载,进一步向下滚动会加载另一组图像。

我尝试使用 scroll()、scrollBy() 和 Actions 方法,但没有响应。 但是单独使用 scrollIntoView() 方法会滚动页面。因为我需要选择的图像只有在滚动加载完成后才会出现,所以我不能在这里使用 scrollIntoView() 。请注意,我正在尝试的滚动窗口位于 iframe 和 div 标签内。

((JavascriptExecutor) driver).executeScript("scroll(0,400)");

((JavascriptExecutor) driver).executeScript("window.scrollBy(0,250)", "");

Actions action = new Actions(driver);
action.sendKeys(Keys.PAGE_DOWN);

【问题讨论】:

  • 你试过滚动到元素位置吗?
  • 元素仅在滚动后可见。所以不能使用滚动到。

标签: javascript selenium selenium-webdriver scroll selenium-chromedriver


【解决方案1】:

要滚动到底部,请将scrollTop 属性设置为最大值。有滚动条的容器通常是<body>:

((JavascriptExecutor)driver).executeScript(
    "document.body.scrollTop = -1 >>> 1");

<html>

((JavascriptExecutor)driver).executeScript(
    "document.documentElement.scrollTop = -1 >>> 1");

或可滚动<div style="overflow: scroll;">

WebElement div = driver.findElement(By.cssSelector(...));
((JavascriptExecutor)driver).executeScript(
    "arguments[0].scrollTop = -1 >>> 1", div);

请注意,您首先需要在目标框架上设置上下文。

【讨论】:

  • 我尝试了这两个代码但没有帮助。那么我们需要在某处设置容器吗?我已经切换到 iframe 并尝试了这段不适合我滚动的代码,
  • 哪个元素有滚动条?
  • 我不确定如何找到具有滚动条的元素。仅使用检查元素发现滚动条存在于 div 标签之一内。请告诉我如何找到它
  • 检查时突出显示的元素应与滚动条的大小相匹配。然后只需使用executeScript 在此元素上设置scrollTop 属性。
  • 是的。滚动在控制台中以及通过代码 ((JavascriptExecutor)driver).executeScript("arguments[0].scrollTop = -1 >>> 1", element); 也可以正常工作。加载内容时出现问题。所以处理它对我有用。谢谢:)
猜你喜欢
  • 2011-04-10
  • 2018-03-04
  • 1970-01-01
  • 2018-07-28
  • 2020-04-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多