先來看一下頁面效果:是一個可輸入的下拉列表
再來看一下下拉框的實現方式: 是用<ul>
和<li>
方式來實現的下拉框,不是select
類型的,所以不能用傳統的select定位方法。
在著手定位元素前一定一定要先弄清楚下拉列表的實現方式!!! 我一開始就是看到是下拉列表,想當然的采用select
方法來定位,然后報錯了QAQ ,大概意思是說該元素不支持使用select方法,然后才想著看一下實現代碼,結果才發現下拉框字段是在<input>
標簽下的。
解決思路:
?1、定位下拉框
?2、因為是<input>
標簽,因此使用send_keys方法給下拉框傳值
?3、定位到下拉項
?4、點擊下拉項
代碼實現:
# 導入包
from selenium import webdriver
from selenium.webdriver.common.by import By
import time# 定位下拉框
mcc_name = 'body > div.el-dialog__wrapper.created-small-margin > div > div.el-dialog__body > div > form > div:nth-child(5) > div > div > div > input'# 使用send_keys方法給下拉框傳值
industry = driver.find_element(By.CSS_SELECTOR, mcc_name)
industry.send_keys('零售業 / 綜合零售 / 百貨商店')
time.sleep(1)# 定位下拉項
indus = 'body > div.el-popper.el-cascader__dropdown > div.el-cascader__suggestion-panel.el-scrollbar > div.el-scrollbar__wrap > ul > li'# 點擊下拉項
driver.find_element(By.CSS_SELECTOR, indus).click()
常見問題:
元素定位不到怎么辦?
多嘗試幾種定位方式,這個不行換另一個試試,八種定位方式總有一種適合。
另外,不要太過依賴F12直接copy的selector
和Xpath
, 因為很有可能就是這個原因導致的!!!有很多時候直接copy過來拿去定位,就會定位不到,實在不行手動輸入定位一下。
適當的添加延時時間。 很多時候操作太快也有可能導致元素定位不到,比如在這個例子的給下拉框傳值
和點擊下拉項
之間,如果不添加延時time.sleep(1)
,也會導致下拉項元素定位不到。