如何等待具有相同类名的所有元素?

时间:2014-09-02 15:44:29

标签: java selenium selenium-webdriver automation wait

请参阅下面的部分代码:

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()方法实际等待页面上的所有元素?

1 个答案:

答案 0 :(得分:-1)

你可以等待任何条件,所以我猜想元素列表是预期的大小。

你试过findElementsBy() ???