Как с помощью объектной модели страницы (Webdriver + Java + JUnit) утверждать, что список «select» имеет значение или видимый текст?

public Select select;
public Select getSelect(WebElement element) {
    select = new Select(element);
    return select;
}

это функция, которую я буду использовать в тесте, чтобы утверждать, что у select есть элемент, видимый по тексту, но я не знаю, как точно утверждать, что у select есть этот элемент, я думаю, что есть лучший способ сделать это

@FindBy(id = "...")
WebElement = mainSelect;

public void assertSelectHasElement(String string) {
    getSelect(mainSelect);
    select.selectByVisibleText(string);
    Assert...?
}

POM - это шаблон для написания кода, например, деформации каждого действия (кнопки / поля и т. д.) На веб-странице в методах / функциях. Утверждение - другое дело. Java предоставляет оператор assert, просто прочтите документацию. Также, если вы используете TestNg, прочтите это: toolsqa.com/selenium-webdriver/testng-reporters-asserts

Zhivko.Kostadinov 11.05.2018 12:58

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

Daria 11.05.2018 13:41

Хорошо, просмотрите ссылку на мой предыдущий пост. Это может помочь.

Zhivko.Kostadinov 11.05.2018 14:38
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
1
3
921
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Вы можете использовать List<WebElement> allOptions = select.getOptions(); для получения всех опций Select, а затем перебирать их, пока опция не будет найдена (или нет), например:

@FindBy(id = "...")
private WebElement mainSelect;

public void assertSelectedValue(String value)
    select = getSelect(mainSelect);
    List<WebElement> options = select.getOptions();
    boolean optionExists = false;
    for (WebElement e : options) {
        if (e.getText().equals(value)) {
           optionExists = true;
           break;
        }
    }
    assertTrue("Option x should exist", optionExists);
}

используя этот пример, где я должен ввести WebElement моего выбора с именем «mainSelect»? А на части for (WebElement e : options) "опции" светится красным

Daria 11.05.2018 12:25

options является результатом select.getOptions (). Отредактировано для уточнения.

katrihpl 11.05.2018 14:08

Если в раскрывающемся списке есть только одно выбранное значение, поможет способ ниже.

//method to assert selected value in dropdown
public void assertSelectedValue(String expectedSelectedValue){

    WebElement option = getSelect(webelement).getFirstSelectedOption();
    String actualSelectedItem = option.getText();
    Assert.assertEquals(actualSelectedItem, expectedSelectedValue);
}

//method to select options by visible text in dropdown
public void selectDropdownOption(String optionToSelect){
    getSelect(webelement).selectByVisibleText(optionToSelect);
}

если в раскрывающемся списке выбрано несколько вариантов, используйте предоставленную логику в другом ответе katrihpl.

использовал утверждение testNG.

murali selenium 11.05.2018 11:50

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

Daria 11.05.2018 14:14

Другие вопросы по теме