【问题标题】:How to use selenium to collect information from an element that has not been loaded yet如何使用 selenium 从尚未加载的元素中收集信息
【发布时间】:2013-05-28 07:30:54
【问题描述】:

嗨,我对 selenium 非常陌生,我想收集所有具有特定跨度 id 的元素。

问题:当 selenium 打开网页时,它只显示(默认情况下)前三个 div,每个 div 包含大约 50 行数据。我想从所有 div 中包含的 span 中获取信息(文本)。有没有办法从那些未加载的 div 中获取信息?如果不是,我如何通过控制滚动条来加载这些 div?

【问题讨论】:

  • 能否将您的 HTML 代码与您的问题一起粘贴?如果可能,请给我们链接,因为其他人无法想象您的情况。如果您不能提供链接,请给我们一些其他网站链接,该链接具有您想要自动化的类似功能。
  • 该代码是公司版权,所以我不能粘贴它。但类似的功能之后是 facebook,它会在滚动时加载后续数据。

标签: java selenium


【解决方案1】:

您可以使用以下代码向下滚动页面,但无法在不加载的情况下从 div 获取信息。

WebDriver driver = = new FirefoxDriver();
JavascriptExecutor jse = (JavascriptExecutor)driver;
jse.executeScript("window.scrollBy(0,300)", "");

JavascriptExecutor js = (JavascriptExecutor)driver;
                    js.executeScript("window.scrollTo(0,Math.max(document.documentElement.scrollHeight," +
                    "document.body.scrollHeight,document.documentElement.clientHeight));");

【讨论】:

  • 非常感谢您的帮助。但是一旦我向下滚动到底部,上面的 div 就会卸载。有没有一种方法可以知道何时遍历了上三个 div 中的所有行,然后可以加载接下来的三个 div,因为页面一次只加载三个 div
  • 正如您在问题中提到的,您的主要任务是获取所有 div 数据,以便您可以将滚动模块代码(由我提供)保留在一个函数中,并从您的 @test 函数中随时调用它新的 div 会加载,然后您可以将文本收集到一个数组中,并可以尝试加载新的 div,然后再次从新的 div 中获取文本。通过这种方式,您将能够收集所有 div 数据。
猜你喜欢
  • 1970-01-01
  • 2019-05-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-10-07
  • 2018-01-22
  • 2019-11-06
  • 1970-01-01
相关资源
最近更新 更多