【问题标题】:Selenium / java: how to get get total page lengthSelenium / java:如何获得总页面长度
【发布时间】:2019-05-16 07:58:40
【问题描述】:

使用 Selenium Java 绑定。

我正在尝试编写一个简短的模块,它将获取浏览器页面的完整屏幕截图(我知道 AShot 存在,但它没有维护,对我来说有一些问题)。

作为其中的一部分,我想知道我正在处理的整页长度是多少,这样我就可以计算我需要拍摄的照片数量,以及底部的任何剩余部分。有很多例子展示了如何滚动到页面底部(例如this question),但我想知道是否有办法让JavascriptExecutor 返回页面长度的值,以便我可以使用它在我的脚本中?

【问题讨论】:

    标签: java selenium webdriver


    【解决方案1】:

    你需要scrollHeight

    JavascriptExecutor js = (JavascriptExecutor) driver;         
    js.executeScript("return document.documentElement.scrollHeight");
    

    在进一步寻找更强大的解决方案后,这个 Javascript 代码(我从同一个 website 获取)应该会提供更好的结果:

    let scrollHeight = Math.max(
      document.body.scrollHeight, document.documentElement.scrollHeight,
      document.body.offsetHeight, document.documentElement.offsetHeight,
      document.body.clientHeight, document.documentElement.clientHeight
    );
    
    return scrollHeight;
    

    【讨论】:

    • 我没有意识到你可以使用 JS 中的 return 语句——我的 JS 至少可以说是初级的。我认为这通常会非常有用。再次感谢。
    • 我不确定您的问题的主要焦点是什么,但我很高兴它有所帮助。您应该能够将 .executeScript 的返回转换为字符串,然后从那里开始。
    • 我会将其转换为数字(我认为是long?)并以这种方式使用它而不是字符串。
    • @JeffC:根据我的个人经验,Selenium 有时会表现得很奇怪,直接转换为数值可能会让您遇到异常。字符串应该始终有效,您可以在 Java 端仔细检查。这是我背后的想法,但见鬼,没有风险,没有乐趣。
    猜你喜欢
    • 2015-12-15
    • 2014-01-28
    • 2018-12-27
    • 2019-04-25
    • 1970-01-01
    • 2015-11-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多