如何从selenium中选择自定义下拉列表元素

时间:2014-03-06 15:11:27

标签: drop-down-menu selenium-webdriver

如何从selenium中选择自定义下拉列表元素。

我想使用selenium python webdrive从下拉列表中选择一个国家/地区。

<select id="id_country" class="hidden-field" name="country" data-id="1394114974464-fOg4n">
<div class="custom dropdown" data-id="1394114974464-fOg4n">
<a class="current" href="#">Belize</a>
<a class="selector" href="#"></a>
<ul>
<li class="">Select Your Country</li>
<li class="">Afghanistan</li>
<li>Albania</li>
<li class="">Algeria</li>
<li class="">American Samoa</li>
<li class="">Andorra</li>
<li>Angola</li>
<li class="">Anguilla</li>
<li class="">Antigua and Barbuda</li>
<li class="">Argentina</li>
<li class="">Armenia</li>

1 个答案:

答案 0 :(得分:0)

从下拉菜单中选择项目的currently recommended method是使用Select类。这是一个简单的例子:

from selenium.webdriver.support.ui import Select
from selenium import webdriver

browser = webdriver.Firefox()
browser.get("file:///C:\testing\\test.html")

element = browser.find_element_by_id("id_country")
select = Select(element)
select.select_by_visible_text("Armenia")

但是,您发布的HTML似乎不起作用;我只是得到一个空的下拉框。您需要修复它才能使用上面的代码。例如:

<html><body>
<select id="id_country" name="country">
<option>Select Your Country</option>
<option>Afghanistan</option>
<option>Armenia</option>
</select>
</body></html>

这对我来说很好,产生一个包含三个选项的下拉框 - Select Your CountryAfghanistanArmenia。将上述Python脚本指向此文件会正确选择Armenia

编辑:这是一个快速而肮脏的Python脚本,可以从国家/地区列表中成功选择亚美尼亚:

from selenium import webdriver

browser = webdriver.Firefox()
browser.get("http://ds.arm.com/rfq/")

country = "Armenia"

dropdown_path = "id('content')/form/fieldset/div[5]/div[2]/div/a[2]"
country_path = "id('content')/form/fieldset/div[5]/div[2]/div/ul/li[contains(text(), '%s')]" % country

browser.find_element_by_xpath(dropdown_path).click()
browser.find_element_by_xpath(country_path).click()

它使用XPath来查找下拉箭头,然后找到包含“Armenia”的<li>标记。我并不认为它特别直观,或者看起来很整洁,但它确实有效。他们的网站真的过于复杂,所以我不确定是否可以在这里使用更简单的Select方法。通常,如果您可以使用ID(find_element_by_id),类(find_element_by_class)或名称(find_element_by_name)找到元素,则应该这样做。不幸的是,没有人在这里工作:)

我可以推荐Firefox的XPath Checker扩展名,以帮助您找到其他表单元素的类似XPath。祝你好运,我真的不羡慕你不得不与该网站合作!!