Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/381.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java selenium.waitForPageToLoad不';I don’我好像没有等_Java_Selenium_Selenium Rc - Fatal编程技术网

Java selenium.waitForPageToLoad不';I don’我好像没有等

Java selenium.waitForPageToLoad不';I don’我好像没有等,java,selenium,selenium-rc,Java,Selenium,Selenium Rc,我正在更新我不久前编写的一个Selenium程序,其中一部分已经停止工作。我想浏览一个页面上的一系列链接,单击每个链接,确保出现一些预期的文本。但有时会出现一个登录页面(https://library.med.nyu.edu/sso/ezproxy_form.php)显示在所需页面之前,在这种情况下,我需要在检查页面之前登录。问题是,无论我输入什么字符串来检查我是否已登录到登录页面,Selenium都会得出结论认为它不存在并跳过登录,这显然会导致其他所有操作失败。请看下面--我不确定这是否真的是

我正在更新我不久前编写的一个Selenium程序,其中一部分已经停止工作。我想浏览一个页面上的一系列链接,单击每个链接,确保出现一些预期的文本。但有时会出现一个登录页面(https://library.med.nyu.edu/sso/ezproxy_form.php)显示在所需页面之前,在这种情况下,我需要在检查页面之前登录。问题是,无论我输入什么字符串来检查我是否已登录到登录页面,Selenium都会得出结论认为它不存在并跳过登录,这显然会导致其他所有操作失败。请看下面--我不确定这是否真的是问题所在。相反,它似乎在没有实际登录的情况下匆匆完成了“if we need sign in”(如果我们需要登录)代码,然后显然没有通过测试的主要部分,因为它不在正确的页面上

这是密码,有人看到我的错误吗

       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?");
                    }
       }
for(int i=0;i
登录页面是否有页面标题?如果是,请尝试使用selenium.getTitle()方法验证页面标题,以检查您是否要登录页面。如果没有,请继续单击链接而不登录

我认为页面标题验证有助于解决此问题

尝试放置:

selenium.setSpeed("1000");
打开selenium.open之后,这将在selenium命令之间注入1秒延迟(1000ms)。您应该将添加此项作为一种标准做法,尤其是在您没有运行headless浏览器的情况下

您也可以考虑使用,因为您知道如果登录页面上的SURE命令GET位置,您希望访问的URL。这将返回当前页面的绝对URL。可能比在页面中查找随时可能更改的元素更有效

因此,要在上面的代码中使用getLocation:

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

同样,这只是一个例子来说明我所说的。希望它能帮助您。

您收到的确切错误消息是什么?谢谢。我在这方面花了更多的时间,并添加了getTitle()函数。不幸的是,这没有帮助。虽然我将两个等待时间都增加到400000(!),并将第二个等待时间移到第一个if语句中,但似乎计时有问题。这个程序似乎在毫无等待的情况下,在点击过程中杂乱无章地进行着。在登录页面加载之前,它就开始查找Resources.get(i).name,并确定它不在那里,然后直接返回到重新打开“/”。它似乎根本不尊重等待!真奇怪。时间到了吗?确切的错误消息是什么?您可以在catch块中使用e.printstacktrace()来获取调试问题的详细异常。我认为它不会超时。比如说,我在测试《纽约时报》的链接是否有效,它要查找的文本是页脚中的“©2011纽约时报公司”。运行Firefox时,我在日志窗口中看到,它进入我的代理登录页面,不到几秒钟就完成并查找了“©2011纽约时报公司”,失败了,因为它仍然在登录页面上,并开始循环,回到我的主页并尝试测试下一个链接。起初我认为这是因为它无法识别登录页面,但我做了getTitle更改,它似乎能够识别它。只是没有真正登录或等待。我已经检查了十几次表单元素的名称。。。我没有收到错误消息,它只是不断地通过我的测试,而没有给出正确的结果!谢谢我发现了更多关于这个问题的信息(我通常没有时间去做的辅助项目),结果我把它误诊了——我想我应该发布一个新的问题,因为它非常不同——它执行页面重定向的速度太快,以至于我无法“看到”它们。