3

我正在运行: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 秒,然后给我找不到元素错误。

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

4

1 回答 1

5

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

为了公开这样的选择列表,我使用 JavaScript 来更改select'display属性。在访问 fancy 之前,我已将此片段添加到我的 watir-webdriver 工具箱中select_lists

script = %q{document.getElementById("emu1").style.display = "block");}
browser.execute_script(script)

这会改变选择列表的显示属性,因此现在可以通过select_listwebdriver 可用的所有命令访问它。

您可以通过前往带有选择列表的页面并打开您首选的 Web 浏览器的开发者控制台来尝试一下。尝试以下操作,看看您现在是否看到选择列表出现:

document.getElementById("emu1").style.display = "block";

如果这不起作用,请尝试使用display = "inline". 如果现在显示一个标准的 HTML 选择列表,那么您已经找到了罪魁祸首和解决方案。

于 2013-09-06T03:14:40.687 回答