2017-07-25 50 views
2

我無法從下拉列表(實際上有兩個季節和日期)中進行選擇。我可以獲得我想要輸入到下拉選擇器的值,但是我無法理解我需要做什麼才能以編程方式從下拉列表中進行選擇。PYTHON硒:單擊包含Java的特定下拉菜單

這是網站,該網站的興趣: https://dataride.uci.ch/iframe/RankingDetails/1?disciplineId=10&groupId=1&momentId=19264&disciplineSeasonId=19&rankingTypeId=1&categoryId=22&raceTypeId=0

這裏是我使用的基本代碼:(約格式化很遺憾,曾與長串的麻煩。)

`import requests 
from selenium import webdriver 
from time import sleep 
from bs4 import BeautifulSoup 

url='https://dataride.uci.ch/iframe/RankingDetails/1?disciplineId=10&groupId=1&momentId=19264&disciplineSeasonId=19&rankingTypeId=1&categoryId=22&raceTypeId=0' browser=webdriver.Chrome(executable_path='F:\Anaconda\chromedriver\chromedriver_win32\chromedriver.exe') 

browser.get(url) season_list=browser.find_element_by_id('seasons_listbox').get_attribute('textContent')dates_list=browser.find_element_by_id('dates_listbox').get_attribute('textContent').split('Ranking')[1] 

for i in range(0,len(season_list),4): 
    year=season_list[i:i+4] 
    for j in range(0,len(dates_list),10): 
     date=dates_list[j:j+10] 
     print('YEAR: ',season_list[i:i+4],' DATE ',dates_list[j:j+10])` 

以下是我希望能夠遍歷的兩個菜單的屏幕截圖: enter image description here

回答

1

這是工作代碼。我使用xpath得到下拉菜單,然後使用send_keys

from selenium import webdriver 
driver = webdriver.Chrome() 
url = 'https://dataride.uci.ch/iframe/RankingDetails/1?disciplineId=10&groupId=1&momentId=19264&disciplineSeasonId=19&rankingTypeId=1&categoryId=22&raceTypeId=0' 

driver.get(url) 
xpath_season = '//*[@id="ranking-details-view"]/div[1]/div/div/div[1]/ul/li[2]/span' 
season = driver.find_element_by_xpath(xpath_season) 

xpath_date = '//*[@id="ranking-details-view"]/div[1]/div/div/div[1]/ul/li[3]/span' 
date = driver.find_element_by_xpath(xpath_date) 

season.send_keys('2016') 
date.send_keys('31/12/2015') 

如果您要選擇從下拉列表中,那麼你需要得到整個列表中的降option

+0

工作就像一個魅力,我非常感謝這方面的援助!我假設如果我想循環瀏覽所有頁面(他們只報告每頁1-50個騎手),我只需要申請你所做的同樣的方法? – Kyle

+0

只需使用'send_keys'發送不同的值 – ksai