Получить кросс-браузер Scrollheight через Selenium - PullRequest
2 голосов
/ 04 мая 2010

Я работаю над проектом, использующим Selenium, и я хотел бы попытаться получить кросс-браузерную и кроссплатформенную версию веб-страницы с полной высотой. IE8, как всегда, упрямый, есть ли у кого-нибудь идеи, как это решить?

Проблема: когда вы прокручиваете страницу вниз, например, 500px, и вы продолжаете делать это до нижней части страницы, последняя прокрутка будет менее 500px. Мне нужно знать, сколько этот последний свиток был.

Два способа решения: 1) Найти смещение, которое было прокручено каждый раз (работает везде, кроме IE8) 2) Найдите общую высоту веб-страницы

Я знаю, функция JQuery height () делает это, но я не могу использовать эту функцию из Selenium RC. Если вы знаете способ вызова функций JQuery через Selenium или любое другое решение, пожалуйста, сообщите!

Ура, Генри

1 Ответ

2 голосов
/ 05 мая 2010

Я нашел решение своей проблемы. Когда вы запускаете тесты с Selenium, он запускает два окна: 1) Окно Selenium, выполняющее все команды 2) Окно браузера, в котором тестируется веб-сайт.

Когда вы пытаетесь получить информацию об окне 2 с помощью функций JavaScript, вам нужно сделать следующее: 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;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...