selenium.waitForPageToLoad, кажется, не ждет - PullRequest
1 голос
/ 10 августа 2011

Я обновляю программу Selenium, которую я написал некоторое время назад, и часть ее перестала работать.Я хочу просмотреть целую серию ссылок на странице, щелкнуть по каждой из них, чтобы убедиться в наличии ожидаемого текста.Но иногда страница входа в систему (https://library.med.nyu.edu/sso/ezproxy_form.php) появляется перед нужной страницей, и в этом случае мне нужно войти в систему, прежде чем проверять страницу. Проблема в том, какую строку я ввожу, чтобы проверить,Приземлившись на странице входа в систему, Selenium приходит к выводу, что его нет, и пропускает вход в систему, что, очевидно, приводит к сбою всего остального. См. ниже - я не уверен, что на самом деле это была проблема.через код «если нам нужно войти» без фактического входа в систему, то, очевидно, провалить основную часть теста, потому что он не на нужной странице.

Вот код - кто-нибудь видит мою ошибку?

       for (int i = 0; i < Resources.size(); i++) {
        try {
                        selenium.open("/");
                        selenium.click("link=" + Resources.get(i).link);
                        selenium.waitForPageToLoad("100000");
                        if (selenium.isTextPresent("Please sign in to access NYUHSL e-resources")) {
                            selenium.type("sso_user", kid);
                            selenium.type("sso_pass", password);
                            selenium.click("name=SignIn");
                            selenium.waitForPageToLoad("100000");
                        }

                        if (!selenium.isTextPresent(Resources.get(i).text)) {
                            outfile.println(Resources.get(i).name + " failed");
                        }
                    } catch (Exception e) {
                        outfile.println(Resources.get(i).name + " could not be found--link removed?");
                    }
       }

Ответы [ 2 ]

1 голос
/ 13 августа 2011

Попробуйте ввести:

selenium.setSpeed("1000");

Сразу после selenium.open это добавит 1-секундную задержку (1000 мс) между командами selenium.Вы должны сделать это стандартной практикой, особенно если вы не используете безголовые браузеры.

Также вы можете рассмотреть возможность использования, так как вы знаете URL, который вы ожидаете, если на странице входа в систему,команда селена getLocation.Это вернет абсолютный URL текущей страницы.Может быть более эффективным, чем пытаться искать элементы, которые могут измениться в любое время на странице.

Итак, чтобы использовать getLocation в приведенном выше коде:

if (selenium.getLocation() == "your reference url"){
do your login stuff here
}

Опять же, это всего лишь примерчтобы проиллюстрировать то, что я говорю.Надеюсь, это поможет вам.

1 голос
/ 10 августа 2011

Есть ли у страницы входа заголовок страницы? Если да, попробуйте проверить заголовок страницы, используя метод selenium.getTitle () , чтобы проверить, не направляетесь ли вы на страницу входа. Если нет, перейдите по ссылке без входа в систему.

Я думаю, что проверка заголовка страницы может помочь решить эту проблему

...