2017-08-16 75 views
0

我正在創建一個允許用戶通過Python與網站進行交互的函數。具體來說,將向用戶提供要選擇的選項列表,並且所選擇的選項將點擊相應的鏈接。我們假設這是我的代碼:Python - 從Selenium的列表中選擇一個選項

crop = input('\n\nSelect a crop: Wheat, Wetland rice, Dryland rice, Maize, Barley, Sorghum, Rye, Pearl millet, ' 
      'Foxtail millet, Oat, Buckwheat, White potato, Sweet potato, Cassava, \n Yam and Cocoyam, Sugarcane, Sugarbeet,' 
      ' Phaseolus bean, Chickpea, Cowpea, Dry pea, Gram, Pigeonpea, Soybean, Sunflower, Rapeseed, Groundnut, Oilpalm, ' 
      'Olive, Jatropha, \n Cabbage, Carrot, Onion, Tomato, Banana, Citrus, Coconut, Cocoa, Cotton, Flax, Coffee, Tea, ' 
      'Tobacco, Alfalfa, Pasture, Miscanthus, Switchgrass, Reed canary grass') 

我該如何編寫下一個功能,讓我們根據他或她的答案點擊相應的鏈接?我使用哪個driver.find_element_by_代碼?

我想使用的:

Select(driver.find_element_by_css_selector(crop).select_by_value(crop) 

但它不工作。

如果有幫助,這對小麥鏈接代碼:

<input id="buttonSubmit__dim_fieldcrp2=ce_whe&amp;dimType=crp2&amp;fieldmain=main_py_six_qdns&amp;idPS=1e1d6e7d7ec3368cf13a68fc523d1ed4870e8b45&amp;idAS=0&amp;idFS=0" name="fieldcrp2=ce_whe&amp;dimType=crp2&amp;fieldmain=main_py_six_qdns&amp;idPS=1e1d6e7d7ec3368cf13a68fc523d1ed4870e8b45&amp;idAS=0&amp;idFS=0&amp;_passChanged=true&amp;_eventdim" value="Wheat" onclick="return wf_click(this);" type="submit" class="linksubmit linksubmitfalse" style="border: none;"> 

回答

2

我想你可以選擇與find_element_by_css_selector方法你input元素。因爲它是由CSS選擇器允許您可以Wheat訪問元素的屬性,所以在你的例子爲input元素value屬性:

elem = driver.find_element_by_css_selector("input[value=\"Wheat\"]") 
elem.click() 

如果你有很多input元素與價值,你可以嘗試是更精確的通過預先選擇您的目標input的父元素或通過在CSS選擇添加你元件的類名:

elem = driver.find_element_by_css_selector("input.linksubmit[value=\"Wheat\"]") 
elem.click() 

要使用由用戶輸入的值可以使用的format方法您的字符串:

driver.find_element_by_css_selector('input[value="{}"]'.format(crop)) 

編輯:爲了記錄在案,在Select(...)硒類用於模型與select HTML標籤的元素,讓你事後它select_by_value一個是option例如。

+0

但是,只有當我想選擇小麥時纔有用。如果我想選擇列表中的其他項目怎麼辦?例如,玉米? – user2105555

+0

我編輯了我的答案,以顯示如何使用用戶輸入的值格式化字符串。 – mgc

+0

非常感謝!有用!我只是在代碼的末尾添加了'.click()',就像'driver.find_element_by_css_selector('input [value =「{}」]'。format(crop))。click()' – user2105555

相關問題