由于这些元素已经存在,如果你findElement()
在这些元素上使用,那么你将避免 StaleReferenceException,你会没事的。
您的测试流程看起来像这样(请注意,这是使用此处找到的框架
@Config(url="http://systemunder.test", browser=Browsers.CHROME)
public class MyTest extends AutomationTest {
@Test
public void myTest() {
click(By.id("somethingThatTriggersAjax")
.validateText(By.id("existingId"), "test"); // this would work..
}
}
使用那里的框架,它更容易,并处理它自己的等待,以及 ajax 帐户。但是,如果您更喜欢香草-
public void test() {
WebElement element;
element = driver.findElement(By.id("somthingThatTriggersAjax"));
// now ajax has done something.
element = driver.findElement(By.id("existingId")); // now this will be updated with the new element information.
}
这两种解决方案的替代方法是使用WebDriverWait
's.. 在您的情况下,它类似于...
WebDriverWait.until(ExpectedConditions.textPresentIn(By.id("existingId"), "some text you'd expect"));