簡體   English   中英

不能從帶有 Selenium 和 Python 的下拉菜單中的 select

[英]Can't select from a dropdown menu with Selenium and Python

我真的很難從我要抓取的網站上的下拉菜單中選擇一個項目。 HTML 的代碼如下所示:

<select id="averagesMP" name="MP" onchange="reQuery(this);" style="width: 150px">
       <option value="" selected="selected"></option>
       <option value="1">1</option>
       <option value="2">2</option>
       <option value="3">3</option>
       <option value="4">4</option>
       <option value="5">5</option>
</select>

我已經嘗試了所有我能想到並在 StackOverflow 上找到的東西:我注意到這似乎適用於 select 實際下拉框:

select_mp = Select(driver.find_element_by_xpath("//select[@name='MP']")) 

但我只認為這是有效的,因為代碼運行並且沒有給出任何錯誤。 但是,我仍然無法從下拉菜單中找到 select 任何內容。 我試過了:

  • find_element_by_xpath/name/id/tag/value/text
  • select_mp.select_by_value('2')
  • select_mp.select_by_visible_text('2')
  • select_mp.select_by_index(2)
  • driver.find_element_by_xpath("//select[@name='MP']/option[@value='4']").click()
  • driver.find_element_by_xpath("//option[@value='4']").click()
  • driver.find_element_by_id('averagesMP').click()

有人有建議嗎? 我知道這個問題似乎在這里被問了很多,但我已經嘗試了我在帖子中看到的所有內容並且它不起作用,它似乎不是一個非常復雜的下拉菜單。 只是非常難以捉摸。

一些有用的信息:

  • 我正在使用 Safari 和 SafariDriver

  • 我不斷收到以下錯誤消息:

     raise exception_class(message, screen, stacktrace) selenium.common.exceptions.WebDriverException: Message:

對於select <option>使用Selenium您需要為element_to_be_clickable()誘導WebDriverWait ,您可以使用以下任一定位器策略

  • 使用CSS_SELECTORselect_by_visible_text()

     select = Select(WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "select#averagesMP[@name='MP']")))) select.select_by_visible_text('2')
  • 在一行中使用XPATHselect_by_value()

     Select(WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//select[@id='averagesMP' and @name='MP']")))).select_by_value('2')
  • 注意:您必須添加以下導入:

     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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM