打开URL后超时

时间:2013-03-02 16:12:16

标签: junit rc

我正在使用Selenium RC和Junit。

运行以下简单脚本后,我收到超时错误。

com.thoughtworks.selenium.SeleniumException:30000ms后超时

我已经记录了使用IDE工作正常的IDE脚本。当使用Junit格式格式化相同代码并尝试通过Eclipse和Junit运行时,它会给出上述超时错误。

package script;

import com.thoughtworks.selenium.*;
import java.util.regex.Pattern;

public class ComparePrice extends SeleneseTestCase {
    public void setUp() throws Exception {
        setUp("http://www.landmarkonthenet.com/", "*firefox");
    }
    public void testComparePrice() throws Exception {
        selenium.open("http://www.landmarkonthenet.com/");
        selenium.click("link=Books");
        selenium.waitForPageToLoad("60000");
        selenium.type("id=TopSearch", "junit");
        selenium.click("css=button[type=\"submit\"]");
        selenium.waitForPageToLoad("60000");
        selenium.click("xpath=(//a[contains(text(),'Desc')])[2]");
        selenium.waitForPageToLoad("60000");
        String P1 = selenium.getText("xpath=/html/body[@id='department']/div[@id='page-body']/div[@id='main-content']/div[@id='page-content']/div[3]/div[1]/article/div[2]/p/span[1]");
        System.out.println(P1);
        String P2 = selenium.getText("xpath=/html/body[@id='department']/div[@id='page-body']/div[@id='main-content']/div[@id='page-content']/div[3]/div[2]/article/div[2]/p/span[2]");
        System.out.println(P2);
        String T3 = selenium.getEval("var A = Number(\"" + P1 + "\".substr(3).replace(/,/g,'')); var B= Number(\"" + P2 + "\".substr(3).replace(/,/g,'')); var c = false; if(A>=B) C=true; C");
        System.out.println(T3);
    }
}

5 个答案:

答案 0 :(得分:0)

你在哪一行得到超时错误? 通常情况下,当selenium无法识别DOM中的元素时,如果返回任何内容,请检查xpath。 我建议你使用xpath finder: https://addons.mozilla.org/en-us/firefox/addon/xpath-finder/

答案 1 :(得分:0)

尝试使用Selenium Remote Control 1.0.2 你可以在这里阅读Selenium Remote Control 1.0.2并在那里下载jar:

答案 2 :(得分:0)

将Selenium RC独立jar更新为最新版本:http://docs.seleniumhq.org/download/2.31.0

在使用waitForElementToPresent代替waitForPageToLoad

加载网址后,放置一些下一个要等待的元素

使用windowMaximize更好地查看。

如果您的完整会话超时,请使用setTimeOut

答案 3 :(得分:0)

而不是使用selenium.waitForPageToLoad(“60000”);

每次点击后尝试使用以下内容

for (int second = 0;; second++) {
            if (second >= 60) Assert.fail("timeout");
            try { if (selenium.isVisible("next element")) break; } catch (Exception e) {}
            Thread.sleep(1000);
        }

然后,您将能够找到其超时错误的确切位置 e.g。

public void testComparePrice() throws Exception {

selenium.open("http://www.landmarkonthenet.com/");

selenium.click("link=Books");

for (int second = 0;; second++) {
    if (second >= 60) Assert.fail("timeout");
    try { if (selenium.isVisible("id=TopSearch")) break; } catch (Exception e) {}
    Thread.sleep(1000);
        }

selenium.type("id=TopSearch", "junit");
selenium.click("css=button[type=\"submit\"]");

等等

答案 4 :(得分:0)

您可以尝试以下方法 - > 1.当您尝试浏览应用程序时。找出应用程序中的一些静态元素,并使用For循环和内部循环来应用动态等待控制,检查该元素是否存在。

for (int second = 0;; second++) {
        if (second >= 160) fail("timeout");
        try { if (selenium.isTextPresent(" Web Element on the page")) break; } catch (Exception e) {}
        Thread.sleep(1000);
    }