如何从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>
答案 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 Country
,Afghanistan
和Armenia
。将上述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。祝你好运,我真的不羡慕你不得不与该网站合作!!