Как сделать цикл внутри контейнера, чтобы выбрать значение в селене? - PullRequest
0 голосов
/ 30 ноября 2018

У меня есть страница продукта с размерами внутри контейнеров, я пытался перечислять элементы и получать размер по тексту, но список всегда возвращает ноль, я пробовал xpath родительского и дочернего элементов, и я получаю ту же ошибку, Как можноя перечисляю размеры и выбираю определенный размер?

public void chooseSize(String size) {
    String selectedSize;
    List<WebElement> sizesList = actions.driver.findElements(By.xpath("SelectSizeLoactor"));
    try {
        for (int i = 0; i <= sizesList.size(); i++) {
            if (sizesList.get(i).getText().toLowerCase().contains(size.toLowerCase()));
            {
                selectedSize = sizesList.get(i).getText();
                sizesList.get(i).click();
                assertTrue(selectedSize.equals(size));
            }
        }
    } catch (Exception e) {
        Assert.fail("Couldn't select size cause of " + e.getMessage());

    }

Product page

Ответы [ 3 ]

0 голосов
/ 30 ноября 2018

Попробуйте варианты ниже

List<WebElement> sizesList = actions.driver.findElements(By.xpath("//[@class='SelectSizeLoactor']"));
List<WebElement> sizesList = actions.driver.findElements(By.cssSelector(".SelectSizeLoactor"));
0 голосов
/ 30 ноября 2018

Я нашел быстрое решение, я использовал часть xpath с text () и позже передал значение этого текста, затем добавил последний из xpath, и это сработало!

String SelectSizeLoactor = "//button[text()='"

public void chooseSize(String size) {
    String selectedSize;
    WebElement sizeLocator = actions.driver.findElement(By.xpath(SelectSizeLoactor+size.toUpperCase()+"']"));
    try {
            if (sizeLocator.getText().toUpperCase().contains(size.toUpperCase()));
            {
                selectedSize = sizeLocator.getText();
                sizeLocator.click();
                assertTrue(selectedSize.equals(size));
            }

    } catch (Exception e) {
        Assert.fail("Couldn't select size cause of " + e.getMessage());

    }
}
0 голосов
/ 30 ноября 2018

Мне кажется, что правильный селектор будет:

actions.driver.findElements(By.cssSelector(".SizeSelection-option"))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...