如何从下拉列表中选择元素

时间:2012-05-31 19:05:46

标签: selenium webdriver

好的,这听起来太通用了。我已经能够在其他领域做到这一点,我不确定这里有什么不同。

我在我测试的系统页面中有这个小小的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()来改变列表中的哪个元素被选中。

当我手动尝试时,这当然有效。但是我在自动化方面遇到了很多麻烦。

欢迎任何帮助。

2 个答案:

答案 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")

The Python doc for Select.

如果两者都不起作用,那么更新您的Selenium版本(当前版本为2.22.0)和浏览器(如果可能) - 例如完全支持的Firefox版本为3.6。*,10,11,12。

如果仍然无效,请寻找令人讨厌的Javascripts炸毁我们的努力。