在python中循环选项菜单selenium

时间:2014-02-11 02:35:41

标签: python loops selenium

我的代码使用selenium从下拉菜单中选择选项。我有一个看起来像这样的代码:

from selenium import webdriver
browser = webdriver.Firefox()
browser.get("http://www.website.com")
browser.find_element_by_xpath("//select[@id='idname']/option[text()='option1']").click()

这很好用。但是下拉菜单中有很多选项,我希望在下拉菜单中循环显示所有项目。我准备了以下代码来循环选项:

options = ["option1", "option2"]
for opts in options:
    browser.find_element_by_xpath("//select[@id='idname']/option[text()=opts]").click()

这不起作用。关于如何让这样的循环工作的任何建议?我不了解python中的循环?

谢谢。

1 个答案:

答案 0 :(得分:3)

这对你有用。代码将

  • 找到元素
  • 迭代从下拉列表中获取所有选项
  • 遍历列表
  • 对于列表中的每个项目,请选择当前选项
  • 当网页发生变化时,有必要重新选择每次传递的下拉列表

像这样:

from selenium import webdriver
from selenium.webdriver.support.ui import Select, WebDriverWait
browser = webdriver.Firefox()
browser.get("http://www.website.com")

select = browser.find_element_by_xpath( "//select[@id='idname']")  #get the select element            
options = select.find_elements_by_tag_name("option") #get all the options into a list

optionsList = []

for option in options: #iterate over the options, place attribute value in list
    optionsList.append(option.get_attribute("value"))

for optionValue in optionsList:
    print "starting loop on option %s" % optionValue

    select = Select(browser.find_element_by_xpath( "//select[@id='idname']"))
    select.select_by_value(optionValue)