我正在竞选: 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秒并给我找不到元素错误。
其他任何有类似问题的人?任何帮助都很好。提前谢谢。
答案 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选择列表,您就找到了罪魁祸首和解决方案。