代码之家  ›  专栏  ›  技术社区  ›  user888469

使用Selenium python从下拉列表中选择页码

  •  1
  • user888469  · 技术社区  · 3 年前

    我正试图将上的页码从默认的第1页更改为第2页 https://stats.oecd.org/Index.aspx?DataSetCode=REVDEU

    目前,我的代码打开了页面,似乎什么也没做,最终超时了。

    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.common.by import By
    from selenium.webdriver.support import expected_conditions as EC
    from selenium.webdriver.support.ui import Select
    
    driver = webdriver.Chrome()
    driver.get("https://stats.oecd.org/Index.aspx?DataSetCode=REVDEU")
    
    
    select = Select(WebDriverWait(driver, 20).until(EC.element_to_be_clickable(
        (By.XPATH, "//select[starts-with(@id, 'PAGE')][starts-with(@name,'PAGE')]"))))
    select.select_by_visible_text('2')
    
    1 回复  |  直到 3 年前
        1
  •  1
  •   Prophet    3 年前

    您使用的选择不正确。
    这对我很有效:

    from selenium import webdriver
    from selenium.webdriver.chrome.service import Service
    from selenium.webdriver.chrome.options import Options
    from selenium.webdriver.support.select import Select
    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.common.by import By
    from selenium.webdriver.support import expected_conditions as EC
    
    options = Options()
    options.add_argument("start-maximized")
    
    webdriver_service = Service('C:\webdrivers\chromedriver.exe')
    driver = webdriver.Chrome(options=options, service=webdriver_service)
    wait = WebDriverWait(driver, 5)
    
    url = "https://stats.oecd.org/Index.aspx?DataSetCode=REVDEU"
    driver.get(url)
    
    select = Select(driver.find_element(By.ID, 'PAGE'))
    select.select_by_value('2')
    

    结果是

    enter image description here