Java 硒不';在GWT中找不到链接、按钮和文本?
我刚刚尝试用Selenium测试我的GWT web应用程序。我用SeleniumIDEFirefox插件记录了一些东西(注册->登录->注销)。但是我的测试在注销部分总是失败,因为Selenium没有找到链接。我又做了一次测试,结果成功了。我想这和反应的速度有关吧?我还做了一些其他的测试,他们总是失败,因为没有找到链接、按钮或文本。我怎样才能解决这个问题?是Selenium在页面尚未准备好时检查的问题吗?Thread.sleep在检查或按下按钮/链接或可能是等待页面加载之前可以工作吗?关于这个问题,您是正确的。Selenium在Javascript用内容填充DOM树之前运行测试。你可以线程.sleep(),但是如果你的应用程序运行速度比你预期的慢,那么这会减慢你的测试速度,并且偶尔会失败。最好等到元素超时为止 我的所有测试都扩展了该类,该类反过来扩展了SeleneseTestCase,我在测试中调用type()而不是调用selenium.type():Java 硒不';在GWT中找不到链接、按钮和文本?,java,testing,gwt,selenium,Java,Testing,Gwt,Selenium,我刚刚尝试用Selenium测试我的GWT web应用程序。我用SeleniumIDEFirefox插件记录了一些东西(注册->登录->注销)。但是我的测试在注销部分总是失败,因为Selenium没有找到链接。我又做了一次测试,结果成功了。我想这和反应的速度有关吧?我还做了一些其他的测试,他们总是失败,因为没有找到链接、按钮或文本。我怎样才能解决这个问题?是Selenium在页面尚未准备好时检查的问题吗?Thread.sleep在检查或按下按钮/链接或可能是等待页面加载之前可以工作吗?关于这个问
public class WebTestCase extends SeleneseTestCase {
private final long DEFAULT_TIMEOUT = 30;
protected SeleniumServer server;
public WebTestCase() {
}
public WebTestCase(String name) {
super(name);
}
protected void startServer() throws Exception {
server = new SeleniumServer();
server.start();
}
protected void stopServer() {
server.stop();
}
public void waitForElement(final String waitingElement) {
waitForElement(waitingElement, DEFAULT_TIMEOUT);
}
public void waitForElement(final String waitingElement, long timeoutInSeconds) {
new Wait() {
@Override
public boolean until() {
return selenium.isElementPresent(waitingElement);
}
}.wait("Timeout while waiting for element " + waitingElement, timeoutInSeconds * 1000);
}
public void type(String element, String text) {
waitForElement(element);
selenium.type(element, text);
}
public void typeKeys(String element, String text) {
waitForElement(element);
selenium.typeKeys(element, text);
}
public void click(String element) {
waitForElement(element);
selenium.click(element);
}
public void select(String element, String value) {
waitForElement(element);
selenium.select(element, value);
}
public void check(String element) {
waitForElement(element);
selenium.check(element);
}
public void uncheck(String element) {
waitForElement(element);
selenium.uncheck(element);
}
public void focus(String element) {
waitForElement(element);
selenium.focus(element);
}
public void checkTextPresent(final String text) {
checkTextPresent(text, DEFAULT_TIMEOUT);
}
public void checkTextPresent(final String text, long timeoutInSeconds) {
new Wait() {
@Override
public boolean until() {
return selenium.isTextPresent(text);
}
}.wait("Timeout while waiting for text \"" + text + "\"", timeoutInSeconds * 1000);
}
public void checkTextNotPresent(final String text) {
checkTextPresent(text, DEFAULT_TIMEOUT);
}
public void checkTextNotPresent(final String text, long timeoutInSeconds) {
new Wait() {
@Override
public boolean until() {
return !selenium.isTextPresent(text);
}
}.wait("Timeout while waiting for text \"" + text + "\"", timeoutInSeconds * 1000);
}
}
谢谢我试试看。我注意到selenium服务器jar中有一个“Wait”,com.thoughtworks.selenium中有一个。我正在使用com.thoughtworks.selenium.Wait,希望这是正确的?到目前为止,我在你们班上做了一次测试,效果很好。:)