代碼試驗:
from selenium import webdriver
from selenium.webdriver.support.ui import Select
browser = webdriver.Chrome()
url = "https://ssangmun.sen.es.kr/66769/subMenu.do"
browser.get(url)
browser.maximize_window()
select = Select(browser.find_element_by_id("srhMlsvYear"))
select.options[0].text #output "2017"
select.select_by_index(0).text #output Nonetype Error
當我使用:
select.options[0].text
有用!但是當我使用:
select.select_by_dex(0)
它發生 Nonetype Error
為什么會出現這個錯誤?
uj5u.com熱心網友回復:
帶身份證
#srhMlsvYear
HTMLDOM 中有兩個匹配項。
我建議您使用下面的 CSS 顯式等待:
select#srhMlsvYear
并像這樣使用它:
wait = WebDriverWait(browser, 30)
ele = wait.until(EC.visibility_of_element_located((By.CSS_SELECTOR, "select#srhMlsvYear")))
select = Select(ele)
select.select_by_index(0)
進口:
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
uj5u.com熱心網友回復:
大概,以下選項文本:
- 2017?
- 2018?
- 2019?等
一旦呼叫url ,就會出現在DOM 樹中。這就是為什么當你:
select.options[0].text
你會看到輸出:
2017
但是,select_by_index(index)不回傳任何內容。因此,當您在選擇所需選項后嘗試提取文本時:
select.select_by_index(0).text
輸出是 Nonetype Error
解決方案
選擇所需選項以獲取選項文本后,您可以使用屬性first_selected_option如下:
代碼塊:
from selenium.webdriver.support.ui 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 driver.get("https://ssangmun.sen.es.kr/66769/subMenu.do") select = Select(WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.CSS_SELECTOR, "select#srhMlsvYear")))) select.select_by_index(0) print(select.first_selected_option.text)控制臺輸出:
2017?
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/415595.html
標籤:
上一篇:在django中上傳圖片
