如何使用selenium从下拉菜单中随机选择?

时间:2016-06-28 09:12:41

标签: python selenium

我对python 3很新,并且一直在学习使用selenium自动完成我的一些Web任务。

所以说他们是页面上的3个下拉列表,月,日和&年。选择下拉菜单时,我究竟如何随机选择菜单中列出的选项?

    month = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun',
             'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']
    day = ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10'
           '11', '12', '13', '14', '15', '16', '17', '18', '19', '20'
           '21', '22', '23', '24', '25', '26', '27', '28', '29', '30', '31']
    year = ['1996', '1995', '1994', '1993', '1992', '1991', '1990', '1989', '1998' ]

    Select(driver.find_element_by_css_selector('#month')).select_by_visible_text('Jun')
    Select(driver.find_element_by_css_selector('#day')).select_by_visible_text('13')
    Select(driver.find_element_by_css_selector('#year')).select_by_visible_text('1981')

是我到目前为止的代码。他们随机选择select_by_visible_text的方式基本上就是我所要求的吗?

2 个答案:

答案 0 :(得分:2)

您可以使用random.choice,因此您的代码将是:

import random    

month = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun',
         'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']
day = ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10'
       '11', '12', '13', '14', '15', '16', '17', '18', '19', '20'
       '21', '22', '23', '24', '25', '26', '27', '28', '29', '30', '31']
year = ['1996', '1995', '1994', '1993', '1992', '1991', '1990', '1989', '1998' ]

Select(driver.find_element_by_css_selector('#month')).select_by_visible_text(random.choice(month))
Select(driver.find_element_by_css_selector('#day')).select_by_visible_text(random.choice(month))
Select(driver.find_element_by_css_selector('#year')).select_by_visible_text(random.choice(year))

答案 1 :(得分:0)

只需使用select_by_index(i),其中从下拉列表中的可用选项数中随机选择i。它将更灵活,您不必维护一个月,日,年的列表......并处理闰年或月数,不同日期,28 v 30 v 31等。

month = Select(driver.find_element_by_css_selector('#month'))
month.select_by_index(randint(0, len(month.options) - 1))

我可能会建议您打印/记录运行期间选择的随机选项。如果您遇到问题,则需要该信息才能重现或进行调查。