【问题标题】:How to assert if selected option from drop down is choosen. Selenium. Page Object Model如果选择了从下拉列表中选择的选项,如何断言。硒。页面对象模型
【发布时间】:2019-01-29 09:46:38
【问题描述】:

我需要从下拉列表中选择选项并检查此选项是否已被选中/对用户可见。选项选择代码:

@FindBy(how = How.ID, using = "id_state")
public WebElement StateDropDown;

 public void ChooseState(String index){
    Select Choose = new Select(StateDropDown);
    Choose.selectByVisibleText(index);

这是我的下拉菜单:

<select name="id_state" id="id_state" class="form-control">
<option value="">-</option>
<option value="1">Alabama</option>
<option value="2">Alaska</option>
<option value="3">Arizona</option>
<option </select>

我想选择 'Alabama' 并使用 assert 来检查是否真的选择了 'Alabama'。我知道我必须编写一个函数,将选择状态的名称发送到字符串。断言它将被包含在此处:

@Then("^I see \"([^\"]*)\" in dropdown$")
public void iSeeInDropdown(String state) 
Assert.assertEquals("Alabama",??????);}

【问题讨论】:

    标签: java selenium automated-tests


    【解决方案1】:

    在 Select 类中,有一个名为“getFirstSelectedOption()”的方法,它将从下拉列表中返回选定的 Web 元素选项。通过使用此方法,您可以检索如下选项:

    Select select = new Select(someElement);
    String option = select.getFirstSelectedOption().getText();
    

    你可以像下面这样断言条件:

    Assert.assertEquals("Alabama", option);

    尝试按照以下步骤操作,

    在页面对象类中添加以下方法:

    public String getSelected() {
                return new Select(StateDropDown).getFirstSelectedOption().getText().trim();
            }
    

    并像下面这样修改这个步骤定义方法,它会调用页面对象类的方法,然后获取选中的选项并断言它。

    @Then("^I see \"([^\"]*)\" in dropdown$") {
            public void iSeeInDropdown(String state) 
                String selectedOption = new PageObjects().getSelected();
                Assert.assertEquals("Alabama", selectedOption);
            }
    

    希望对你有帮助……

    【讨论】:

    • 我认为 trim() 方法不是必需的。如果 UI 中存在前导或尾随空格,则测试将通过而不是失败。
    • @Grasshopper 是的!可能需要也可能不需要 trim() 方法。感谢指出,让提问者自己决定。
    猜你喜欢
    • 2020-01-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-11
    • 1970-01-01
    • 2014-06-23
    相关资源
    最近更新 更多