最近工作中遇到了關於隱藏元素如何定位與點擊的問題,下面就總結下解決過程。
場景:在輸入框中輸入搜索條件(admin),下面出現相應的搜索結果,選擇搜索結果。搜索結果區在未搜索前和選擇結果后為隱藏狀態。
1、思路分析:
(1)點擊編輯按鈕(出現普通彈框)
(2)輸入搜索條件
(3)選擇搜索結果
(4)點擊確定按鈕進行保存
2、初步代碼編寫
文件名稱:architectureCard.py
from selenium import webdriver import time base_url="url地址" driver = webdriver.Firefox() driver.get(base_url+"/6403/card") driver.maximize_window() #點擊編輯按鈕
driver.find_element_by_css_selector(".sc-ebFjAB.jLsEQY.sc-rBLzX.crxYrd").click() #輸入搜索條件
driver.find_elements_by_tag_name("input")[6].send_keys("admin") time.sleep(2) #選擇搜索值
js = 'document.getElementsByClassName("bp3-menu-item bp3-popover-dismiss")[1].click()' driver.execute_script(js) time.sleep(2) #點擊確定
driver.find_element_by_css_selector(".bp3-button.bp3-intent-primary.sc-cLQEGU.hOClYU").click() time.sleep(3) driver.quit()
3、代碼優化,頁面封裝與調試
文件名稱:architectureCard.py
from selenium import webdriver from common.base import Base import time base_url = "url地址"
class EditArch(Base): #編輯架構卡按鈕
editarch = ("css selector",".sc-ebFjAB.jLsEQY.sc-rBLzX.crxYrd") #責任人輸入框,取輸入框第七個
person = ("tag name","input") #確定按鈕
submit = ("css selector",".bp3-button.bp3-intent-primary.sc-cLQEGU.hOClYU") def editArch(self): #點擊編輯按鈕
self.click(self.editarch) #輸入搜索條件
aa=self.finds(self.person) aa[6].send_keys("admin") time.sleep(2) #選擇搜索結果
js = 'document.getElementsByClassName("bp3-menu-item bp3-popover-dismiss")[1].click()' self.driver.execute_script(js) #點擊確定按鈕
self.click(self.submit) if __name__ == '__main__': driver = webdriver.Firefox() driver.get(base_url+"/6403/card") driver.maximize_window() time.sleep(2) editA = EditArch(driver) editA.editArch() time.sleep(2) driver.quit()
通過上圖和代碼可以發現,隱藏元素(搜索結果)可以定位到,但是在選中(點擊)搜索結果時,卻沒有使用普通定位加click的方法,是因為click在點擊隱藏元素的時候很難點擊到,用js方法即可解決隱藏元素點擊問題。
4、代碼運行結果