2017-07-25 1 views
2

Ich habe Probleme bei der Auswahl aus einer Dropdown-Liste (zwei tatsächlich, Saison und Datum). Ich kann die Werte abrufen, die ich in den Dropdown-Selektor eingeben möchte, kann jedoch nicht verstehen, was ich tun muss, um programmgesteuert aus dem Dropdown-Menü auswählen zu können.PYTHON Selenium: Klicken Sie auf ein bestimmtes Dropdown mit Java

Dies ist die Website, die von Interesse ist: https://dataride.uci.ch/iframe/RankingDetails/1?disciplineId=10&groupId=1&momentId=19264&disciplineSeasonId=19&rankingTypeId=1&categoryId=22&raceTypeId=0

Hier ist der Basis-Code, den ich verwende: (sehr traurig über die Formatierung, Ärger mit langen Strings hatten.)

`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])` 

Hier ist ein Screenshot der zwei Menüs, die ich gerne durchlaufen könnte: enter image description here

Antwort

1

Hier ist der Arbeitscode. Ich bekomme das Dropdown-Menü xpath und anschließend 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') 

verwenden Wenn Sie die option aus der Dropdown-Liste auswählen möchten, dann müssen Sie die gesamte Liste zu bekommen.

+0

Arbeitete wie ein Zauber, ich schätze die Hilfe mit diesem! ... Ich würde davon ausgehen, dass, wenn ich durch alle Seiten (sie melden nur 1-50 Fahrer pro Seite) würde ich nur bewerben müssen die gleiche Methode wie du getan hast? – Kyle

+0

senden Sie einfach verschiedene Werte mit 'send_keys' – ksai

Verwandte Themen