我对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的方式基本上就是我所要求的吗?
答案 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))
我可能会建议您打印/记录运行期间选择的随机选项。如果您遇到问题,则需要该信息才能重现或进行调查。