【问题标题】:PYTHON Selenium: Click on a specific Dropdown containing JavaPYTHON Selenium:单击包含 Java 的特定下拉菜单
【发布时间】:2017-07-25 09:24:03
【问题描述】:

我无法从下拉列表中进行选择(实际上是两个,季节和日期)。我可以获得我想要输入到下拉选择器的值,但是我无法理解我需要做什么才能以编程方式从下拉列表中选择。

这是感兴趣的网站: 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])`

这是我希望能够遍历的两个菜单的屏幕截图:

【问题讨论】:

    标签: javascript python web-scraping


    【解决方案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,那么您需要获取整个列表。

    【讨论】:

    • 工作就像一个魅力,我非常感谢帮助!...我假设如果我想循环浏览所有页面(他们只报告每页 1-50 个骑手)我只需要应用与您相同的方法吗?
    • 使用send_keys发送不同的值
    猜你喜欢
    • 1970-01-01
    • 2016-11-12
    • 2023-04-09
    • 2019-04-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多