gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 22:41:03 24 4
gpt4 key购买 nike

我正在开发一个使用 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com