Как ждать ВСЕ элементы с одинаковым именем класса?

1

См. Частичный код ниже:

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
    «следующий элемент [...] представлен в 6 раз на моей странице» Если есть 6 из них на странице и вы пытаетесь получить 7 - й элемент , то да, вы будете иметь исключение. Вы хотели сказать, что хотя Selenium находит 6, на самом деле их больше 6?
  • 0
    Когда страница открыта, есть 7 элементов с одинаковым именем класса, и я пытаюсь разобраться с последним из них (седьмым). Вот почему я использую метод wait (), просто здесь он ждет только для видимости первых элементов, поэтому, когда я пытаюсь применить к 7-му элементу, я получаю исключение. Вот почему я использовал thread.sleep. У меня вопрос, есть ли способ сказать, что селен действительно ждет все элементы с одинаковым именем класса страницы.
Теги:
selenium
selenium-webdriver
automation
wait

1 ответ

-1

Вы можете подождать какое-либо условие, поэтому я предполагаю, что для списка элементов должен быть ожидаемый размер.

Вы пытались findElementsBy()???

Ещё вопросы

Сообщество Overcoder
Наверх
Меню