2016-06-28 107 views
1

我很新的python 3,並已學會自動化我的一些網絡任務,我使用硒。如何從使用硒的下拉菜單中隨機選擇?

所以說他們是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

爲什麼不''.select_by_visible_text(random.choice(month))' – Keatinge

+0

謝謝我實際上試過隨機庫,但它有一點不同。感謝您使用快速代碼;-) – listen

回答

1

您可以使用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)) 
+0

當您爲二月等選擇31時,此代碼將導致問題。 – JeffC

1

只需使用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))) 

我建議你打印/記錄在運行過程中選擇的隨機選項。如果您遇到問題,您需要這些信息進行復制或調查。

相關問題