【问题标题】:How to wait ALL elements with the same class name?如何等待具有相同类名的所有元素?
【发布时间】:2014-09-02 15:44:28
【问题描述】:

请看下面的部分代码:

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() 是等待,但不是为了让 ALL 元素被怨恨,这就是我的测试失败的原因。 (这也是我添加thread.sleep方法的原因)。

有没有办法使用wait() 方法来实际等待页面上的ALL 元素?

【问题讨论】:

  • "下一个元素 [...] 在我的页面上出现了 6 次" 如果页面上有 有 6 个元素,然后您尝试获取第 7 个元素是的,你会有一个例外。你的意思是说虽然Selenium发现 6,但实际上多于超过6?
  • 当页面启动时,有 7 个元素具有相同的类名,我正在尝试处理最后一个(第 7 个)。这就是我使用等待的原因() 方法,只是在这里它只等待第一个元素的可见性,所以当我试图应用到第 7 个元素时,我得到一个异常。这就是我使用 thread.sleep 的原因。我的问题是是否有任何告诉 selenium 的方法实际上都在等待页面类名相同的所有元素。

标签: java selenium selenium-webdriver automation wait


【解决方案1】:

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

你试过findElementsBy()???

【讨论】:

    猜你喜欢
    • 2020-11-21
    • 1970-01-01
    • 2021-03-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多