javascript - 通过Selenium获取跨浏览器的scrollheight

标签 javascript jquery internet-explorer-8 selenium

我正在开发一个使用 Selenium 的项目,我想尝试获取跨浏览器和跨平台的完整网页高度。 IE8一如既往的顽固,有没有人知道如何解决这个问题?

问题:当您向下滚动页面时,例如500px 并且你一直这样做直到页面底部,最后滚动将小于 500px。我需要知道最后一张卷轴多少钱。

两种解决方式: 1)找到每次滚动的偏移量(IE8除外) 2)求网页总高度

我知道 JQuery 的 height() 函数可以执行此操作,但我无法在 Selenium RC 中使用此函数。 如果您知道通过 Selenium 或任何其他解决方案调用 JQuery 函数的方法,请告诉我!

干杯, 亨利

最佳答案

我找到了解决我自己问题的方法。 当您使用 Selenium 运行测试时,它会启动两个窗口: 1)执行所有命令的Selenium窗口 2) 测试网站的浏览器窗口。

当您尝试通过 JavaScript 函数获取有关窗口 2 的信息时,您需要执行以下操作: selenium.browserbot.getCurrentWindow()

要通过 selenium 跨浏览器获取浏览器窗口的完整高度,您需要以下脚本:

function getPageHeight(){
    $scrOfY = 0;
    $test = $this->getEval("typeof(selenium.browserbot.getCurrentWindow().pageYOffset)");
    if(strcmp($test,"number") == 0) {
        //Netscape compliant
        $scrOfY = (int)$this->getEval("selenium.browserbot.getCurrentWindow().pageYOffset;");
        //scrOfX = window.pageXOffset;
    } else if( (bool)$this->getEval("selenium.browserbot.getCurrentWindow().document.body != null") && (bool)$this->getEval("selenium.browserbot.getCurrentWindow().document.body.scrollTop != null")) {
        //DOM compliant
        $scrOfY = (int)$this->getEval("selenium.browserbot.getCurrentWindow().document.body.scrollTop;");
        //scrOfX = document.body.scrollLeft;
    } else if( (bool)$this->getEval("selenium.browserbot.getCurrentWindow().document.documentElement != null") && (bool)$this->getEval("selenium.browserbot.getCurrentWindow().document.documentElement.scrollTop != null")) {
        //IE6 standards compliant mode
        $scrOfY = (int)$this->getEval("selenium.browserbot.getCurrentWindow().document.documentElement.scrollTop;");
        //scrOfX = document.documentElement.scrollLeft;
    }
    if(!$scrOfY || $scrOfY <= 0)
        $scrOfY = $this->getEval("selenium.browserbot.getCurrentWindow().document.body.offsetHeight");

    return $scrOfY;
}

关于javascript - 通过Selenium获取跨浏览器的scrollheight,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2767406/

相关文章:

javascript - 如何从 typescript 文件调用 JavaScript 函数

javascript - 如何在断开连接的环境中使用 font-awesome?

javascript - 使用 ngOptions 选择将 undefined 返回到 ngModel

jquery - Chart.js - 如何在绘制图表之前显示加载动画

javascript - 下划线绑定(bind)在 IE8 中不起作用

javascript - 检查是否显示了数组中的所有百分比

javascript - TinyMCE 5 不会将现有内容加载到编辑器中,但代码位于代码 View 中

jQuery 将小数四舍五入为 0.49 或 0.99

jquery - 边框半径不适用于 IE,我使用什么库或 css hack

HTML 在 IE8 Compat View 中呈现,导致一团糟