selenium.waitForPageToLoad似乎没有等待

时间:2011-08-10 18:32:17

标签: java selenium selenium-rc

我正在更新我后来写的一个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 个答案:

答案 0 :(得分:1)

登录页面是否有页面标题?如果是,请尝试使用 selenium.getTitle()方法验证页面标题,以检查您是否要前往登录页面。如果没有,请继续单击链接而不登录。

我认为页面标题验证可以帮助解决此问题

答案 1 :(得分:1)

尝试推杆:

selenium.setSpeed("1000");

在selenium.open之后,这将在selenium命令之间注入1秒延迟(1000ms)。您应该将其添加为标准做法,特别是如果您没有运行无头浏览器。

您也可以考虑使用,因为您知道在登录页面上您希望打开的URL,即selenium命令getLocation。这将返回当前页面的绝对URL。可能比尝试查找可在页面内随时更改的元素更有效。

所以在上面的代码中使用getLocation:

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

这只是一个例子来说明我在说什么。希望它可以帮助你。