我在网络应用测试中使用assertTrue
语句,即使文本在网络中存在,也会返回false。我该如何解决这个问题?
public void Test1() throws Exception {
Selenium selenium = new DefaultSelenium("localhost",1777,"*chrome","http://www.mortgagecalculator.org/");
selenium.start();
try {
selenium.open("/");
Thread.sleep(3000);
selenium.windowMaximize();
selenium.type("name=param[homevalue]", "400000");
selenium.type("name=param[principal]", "7888800");
selenium.select("name=param[rp]", "label=New Purchase");
selenium.type("name=param[interest_rate]", "8");
selenium.type("name=param[term]", "35");
selenium.select("name=param[start_month]", "label=May");
selenium.select("name=param[start_year]", "label=2006");
selenium.type("name=param[property_tax]", "7.5");
selenium.type("name=param[pmi]", "0.8");
selenium.click("css=input[type=\"submit\"]");
assertTrue(selenium.isTextPresent("$58,531.06"));
System.out.println("Assert Statement executed");
selenium.stop();
}
catch (Exception e) {
System.out.println("In Mortgage Calculator App exception Happened");
}
}
答案 0 :(得分:0)
我已经给你的测试跑了一段时间对我来说似乎没问题但是我怀疑这与这里的事实有关:
selenium.click("css=input[type=\"submit\"]");
assertTrue(selenium.isTextPresent("$58,531.06"));
你没有任何等待,所以如果页面/结果加载足够快,以便测试在移动到assertTrue时不会爆炸,它只会成功找到“$ 58,531.06”。
我建议在这里使用'waitForTextPresent',或者在那里放一些东西以确保测试可以在检查之前加载结果。
希望有所帮助。