Ruby / Watir从下拉菜单中选择一个选项

时间:2015-05-15 19:33:00

标签: ruby watir watir-webdriver

您好,我对QA自动化网络测试相对较新,我尝试使用SO作为最后的手段。

话虽如此,我在从我们的网络应用程序的下拉菜单中选择一个选项时遇到问题。

以下是代码:

<div id="edit-main-user-role-wrapper" class="form-item">
    <select id="edit-main-user-role" class="form-select my-dropdown ahah-processed" name="main[user_role]" style="display: none;"></select>
    <div class="newListSelected" style="position: static;">
        <span class="selectedTxt">

            Student

        </span>
        <ul class="newList" style="top: -136px; height: 136px; left: 0px; display: none;">
            <li>
                <a class="" href="JavaScript:void(0);"></a>
            </li>
            <li></li>
            <li></li>
            <li></li>
            <li></li>
            <li></li>
            <li></li>
            <li></li>
        </ul>
    </div>
</div>

当我使用Firefox检查元素检查下拉图标时,它会将我引导到代码中的这一行:span class =“selectedTxt”

我试过通过id,class,xpath和css访问列表都无济于事。

以下是我过去的一些尝试:

@browser.div(:class => 'form-item').select_list(:text => 'Student').fire_event ("on click")

@browser.select_list(:xpath, menu).option(:text, option).click

3 个答案:

答案 0 :(得分:2)

带有select标记的元素只有在其中嵌套了带有选项标记的元素时才有意义。通常这些页面中都有很多额外的javascript来提供上下文。

对于不遵循select / option模式的下拉列表,您需要单击下拉列表的元素,然后单击所需的元素,结果将显示该元素。

答案 1 :(得分:1)

这最终对我有用:

@browser.span(:class, "selectedTxt").click   # to make the list visible
@browser.element(:xpath, "#{xpath}").click   # click on the specified xpath

我知道这可能不是最优雅的答案,但它确实有用!

答案 2 :(得分:1)

不确定你是否还在寻找答案,但其中任何一个都适合我:

  @browser.select_list(:id => "you_leaving_us").option(:text => "Other").select
@browser.select_list(:id => "you_leaving_us").option(:value => "8").select

而不是li,我有选择权。希望它有效