好的,这听起来太通用了。我已经能够在其他领域做到这一点,我不确定这里有什么不同。
我在我测试的系统页面中有这个小小的html片段:
<select id="TransferUnit" name="TransferUnit">
<option value="GB" selected="selected">GB</option>
<option value="TB">TB</option>
</select>
非常简单,对。从selenium,我可以通过在select元素上发出一个.click()来打开下拉列表。我可以通过.is_displayed()检查这两个选项是否可见。我可以检查是否使用.is_selected()选中它。但我不能让.click()来改变列表中的哪个元素被选中。
当我手动尝试时,这当然有效。但是我在自动化方面遇到了很多麻烦。
欢迎任何帮助。
答案 0 :(得分:1)
在IDE中,使用如下定位器对元素执行单击:
xpath="//option[@value='TB']"
答案 1 :(得分:1)
根据this doc,您可以执行以下操作之一:
无论
// even when the drop down is not expanded
driver.find_element_by_xpath("//option[@value='TB']").click();
或
select = Select(driver.find_element_by_tag_name("select"))
select.deselect_all()
select.select_by_visible_text("TB")
如果两者都不起作用,那么更新您的Selenium版本(当前版本为2.22.0)和浏览器(如果可能) - 例如完全支持的Firefox版本为3.6。*,10,11,12。
如果仍然无效,请寻找令人讨厌的Javascripts炸毁我们的努力。