1、問題:使用selenium進行元素的抓取,無法進行自動選擇。
抓取的頁面截圖:
頁面點擊效果:
手動操作:使用鼠標點擊該欄位,自動下拉展示可選項。使用元素定位,卻無法進行定位到對應的選項內容。
解決思路:模擬鍵盤操作,鼠標點擊展示可選項,通過上下鍵和ENTER鍵進行選擇。
2、代碼展示:
# 證件有效期 self.driver.execute_script('window.scrollBy(0,250)') # 滑動頁面滾動 element =self.driver.find_element_by_xpath('//[@id="countValidTime"]/div/div/div') # 定位選擇欄位 element.click() # 模擬鼠標點擊 sleep(2) element.send_keys(Keys.ENTER)
最終結果:
運行結果顯示:selenium.common.exceptions.ElementNotInteractableException: Message: Element <div class="ant-select-selection__placeholder"> is not reachable by keyboard
3、最終解決方案,代碼修改
1 # 證件有效期 2 self.driver.execute_script('window.scrollBy(0,250)') # 滑動頁面滾動 3 element =self.driver.find_element_by_xpath('//[@id="countValidTime"]/div/div/div') # 定位選擇欄位 4 # self.driver.implicitly_wait(5) 5 element.click() # 模擬鼠標點擊 6 # sleep(2) 7 self.driver.implicitly_wait(5) 8 # element.submit() 9 # sleep(1) 10 # element.send_keys(Keys.ENTER) 11 self.driver.switch_to.active_element.send_keys(Keys.ENTER)
運行后,完美的模擬鍵盤操作。