selenium自動化_click方法點擊無效

前言

selenium進行自動化的過程中,常出現click()點擊事件無效問題。當click()點擊事件無效時,可使用以下方法解決。

首先-確定該元素是否可見

查找元素並輸出

ele = driver.find_element_by_id("")  
print("目標元素:",ele)

運行查找代碼,若報錯找不到該元素,則元素不可見;若成功輸出元素,則元素可見。

元素不可見-解決點擊無效問題

由於元素在頁面不可見,故操作元素會報錯。自動化操作web網站和人工進行操作步驟是一樣的,當頁面看不到元素是無法操作的,需先露出元素,再操作元素。

露出元素:可通過鼠標懸停、滑動頁面、點擊展示目標彈窗等操作實現,據具體情況而定。

例:

京東首頁點擊我的京東-待處理訂單,直接查找待處理訂單元素,如下:

直接查找報錯“no such element...”,由於該元素在頁面上是隱藏的,故直接定位會報錯。需先鼠標懸停在“我的京東”,展開子菜單彈窗,使得“待處理訂單”可見後方可點擊。

 1 # selenium常見問題
 2 from selenium.webdriver.common.action_chains import ActionChains
 3 from selenium import webdriver
 4 from time import sleep
 5 
 6 driver = webdriver.Chrome()  # 啓動chrome瀏覽器
 7 driver.get('https://www.jd.com/')  # 打開京東
 8 sleep(3)
 9 
10 tag_element = driver.find_element_by_xpath('//*[text()="我的京東"]')  # 菜單-我的京東
11 ActionChains(driver).move_to_element(tag_element).perform()  # 鼠標懸浮在-我的京東,展開子菜單
12 sleep(3)
13 driver.find_element_by_link_text("待處理訂單").click()  # 點擊子菜單-待處理訂單
14 sleep(3)

運行代碼,成功點擊子菜單-待處理訂單

元素可見-解決點擊無效問題

元素當前頁面可見,click()點擊無效可通過執行js代碼實現。

執行js語句代碼如下:

driver.execute_scrtip(js) # js即js語句
js查找元素常用語法如下:
document.getElementById("xxx")  # id獲取元素,xxx表示id值
document.getElementByClass("xxx")  # class獲取元素,xxx表示class值
document.getElementByName("xxx")  #name獲取元素,xxx表示name值
document.getElementByTagName("xxx")  # 獲取tag標籤,xxx表示tag值
document.querySelectorAll("xxx")  # css獲取元素,xxx表示css語法

document.getElementById("xxx").click()  # 點擊元素,元素後直接click()即可

 例:

js ='document.getElementById("password").click()'  # js點擊元素
driver.execute_scrtip(js) # 執行js語句

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章