无法选择下拉列表

时间:2013-09-05 18:25:17

标签: selenium-webdriver watir-webdriver

我正在竞选: Windows 7的 watir-webdriver 0.6.4 selenium-webdriver(2.35.1,2.35.0,2.31.0)

<div>
    //more embedded codes...
    <div id="emd1" class="ui-select" style="float: left; width: 90%;">
        <a id="emb1" class="ui-btn ui-btn-icon-right ui-btn-corner-all ui-shadow ui-btn-up-d" href="#" role="button" aria-haspopup="true" aria-owns="emb1" data-theme="d">
            <span class="ui-btn-inner ui-btn-corner-all" aria-hidden="true">
                <span class="ui-btn-text">Choose one... </span>
                <span class="ui-icon ui-icon-arrow-d ui-icon-shadow"></span>
            </span>
        </a>
        <select id="emu1" data-placeholder="true" data-native-menu="false" serial="1" sequenceid="1" tabindex="-1">
            <option value="">Choose one...</option>
            <option value="A">Apple </option>
            <option value="B">Banana </option>
            <option value="C">Cat </option>
            <option value="D">Dog </option>
            <option value="E">Elephant </option>
            <option value="F">Fish </option>
        </select>
    </div>
</div>

无论何时我想选择ddl,我都会一直这样做,而且它总能正常运行

browser.select_list(:id = "emu1").select("Apple")

它将完成工作。突然它停止工作了。我不确定它是否是由于我最近在selenium-webdriver和watir-webdriver上进行的升级。或者由于代码更改。

browser.a(:id => "emb1").wait_until_present

工作正常

browser.select_list(:id => "emu1").wait_until_present

等待30秒并给我找不到元素错误。

其他任何有类似问题的人?任何帮助都很好。提前谢谢。

1 个答案:

答案 0 :(得分:5)

如果没有看到显示HTML的CSS,我无法100%确定,但我有一个预感,面向用户的选择列表实际上是一个样式<span><select>很可能被CSS隐藏了。如果CSS隐藏<select>,则webdriver无法“看到”它。

要公开这样的选择列表,我使用JavaScript来改变select的{​​{1}}属性。在访问fancy display之前,我已将此代码段添加到我的watir-webdriver工具箱中:

select_lists

这会改变选择列表的显示属性,因此现在可以通过webdriver可用的所有script = %q{document.getElementById("emu1").style.display = "block");} browser.execute_script(script) 命令访问它。

您可以尝试使用选择列表前往页面并打开首选Web浏览器的开发人员控制台。尝试以下操作,看看您是否现在看到一个选择列表:

select_list

如果不起作用,请尝试使用document.getElementById("emu1").style.display = "block"; 。如果现在显示标准HTML选择列表,您就找到了罪魁祸首和解决方案。