我正在使用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);
}
}
答案 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);
}