请参阅下面的部分代码:
public class OrderDetailsDashboard extends AbstractTestNGSpringContextTests {
By orderDetails = By.cssSelector(".col-md-12 span strong");
By orderMoreDetails = By.cssSelector(".row.panel-info-summary span strong");
By refundOrderButton = By.cssSelector(".refund-order-action");
public orderDetails getOrderDetails(WebDriver driver) {
logger.info("About to collect and returns the specific order details - refreshing page");
WebDriverWait waitForTitle = new WebDriverWait(driver,30);
try {
waitForTitle.until(ExpectedConditions.visibilityOfAllElementsLocatedBy(orderMoreDetails));
}
catch (StaleElementReferenceException ex) {
waitForTitle.until(ExpectedConditions.visibilityOfAllElementsLocatedBy(orderMoreDetails));
}
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
waitForTitle.until(ExpectedConditions.visibilityOfAllElementsLocatedBy(orderDetails));
我有一个似乎已经解决的问题,但我对解决方案并不满意。 我试图用自动化加载页面。下一个元素(在此表示为页面对象):
By orderDetails = By.cssSelector(".col-md-12 span strong")
在我的页面上显示6次,只包含粗体文字。我注意到,当我试图获得第7个元素文本时,我得到了Index Out Of Bounds Exception
。虽然我使用wait()
方法。
最后,我意识到wait()
是等待的,但所有元素不会被憎恨,这就是我的测试失败的原因。 (这也是我添加thread.sleep
方法的原因)。
有没有办法使用wait()
方法实际等待页面上的所有元素?
答案 0 :(得分:-1)
你可以等待任何条件,所以我猜想元素列表是预期的大小。
你试过findElementsBy()
???