我正在开发一个使用Selenium的项目,我想尝试跨浏览器和跨平台获得完整的网页高度。 IE8一如既往地顽固,是否有人知道如何解决这个问题?
问题:向下滚动页面时,例如500px并且你一直这样做直到页面底部,最后一次滚动将小于500px。我需要知道最后一卷是多少。
两种解决方法: 1)找到每次滚动的偏移量(除了IE8以外的任何地方都可以工作) 2)找到网页的总高度
我知道JQuery的height()函数可以做到这一点,但我不能使用Selenium RC中的这个函数。 如果您知道通过Selenium或任何其他解决方案调用JQuery函数的方法,请告诉我们!
干杯, 亨利
答案 0 :(得分:2)
我找到了解决自己问题的方法。 当您使用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;
}