2010-05-04 129 views
2

我正在使用Selenium的項目,我想嘗試獲取跨瀏覽器和跨平臺的完整網頁高度。 IE8一如既往地固執己見,有沒有人對如何解決這個問題有想法?通過Selenium獲取scrollheight跨瀏覽器

問題:當您向下滾動頁面時, 500px,你一直這樣做直到頁面底部,最後一次滾動將小於500px。我需要知道這最後一卷是多少。解決的

兩種方式: 1)找到已被每次滾動(作品無處不在,除了IE8的偏移量) 2)找出網頁

的總高度,我知道JQuery的高度()函數這但是我無法使用Selenium RC的這個功能。 如果您知道通過Selenium或任何其他解決方案調用JQuery函數的方法,請告訴!

乾杯, 亨利

回答

2

我已經找到了解決我自己的問題。 當您使用Selenium運行測試時,它會啓動兩個窗口: 1)執行所有命令的Selenium窗口 2)用於測試網站的瀏覽器窗口。

當您嘗試通過JavaScript函數來獲取有關窗口2的信息,你需要做到以下幾點: selenium.browserbot.getCurrentWindow()

要通過硒得到一個瀏覽器窗口的跨瀏覽器的整個高度,你需要以下腳本:

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; 
} 
+0

哼哼......我會試試這個謝謝。對於Q和A – 2010-05-05 19:02:53

+0

對自己的問題很好的回答! – StefanE 2010-05-20 12:52:10