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