UI自動化-Element is not clickable at point-----問題記錄


在寫ui自動化用例時,遇見了一個問題,點擊元素報錯Element is not clickable at point,網上的常見處理方法有以下四種:

  • 1.未加載完整:

    等待元素加載完整,使用time.sleep或

    WebDriverWait(self.driver, secs, 1).until(EC.element_to_be_clickable((By.xx, value))),優先顯式等待,后者

  • 2.元素在iframe內,需要切換ifram
  • 3.不在視窗里,需要拉滾動條
  • 4.要點擊的元素需要鼠標連貫操作才能點擊:

    ActionChains(driver).move_to_element(menu).click(hidden_submenu).perform()

 

排查了上述問題,均沒有解決,后發現a用例和B用例都是添加,每次都是a成功,b不成功,是因為a執行完,點擊確定之后,這個彈出框關閉的js還沒執行完,b用例就去點添加了,所以待點擊的按鈕被一個提示添加成功的彈出層遮蓋了,但

已經執行了WebDriverWait(self.driver, secs, 1).until(EC.element_to_be_clickable((By.LINK_TEXT, value))) ,所以忽略了本身被遮蓋的可能
最終,在點擊按鈕之前,調用了刷新方法,頁面刷新,彈出層關閉,成功解決問題,猜測通過js更改彈出層的display=none,也可以解決問題(面試時討論過這個問題,三種解決辦法,面試官傾向於time.sleep,前端測試不應該修改頁面元素)

def add_click(self):
  self.pyse.F5()
  css='css=>[class="addBtn"]'
  self.pyse.element_wait(css)
  self.pyse.click(css)

問題解決后,搜索到網上有這個方法來解決被覆蓋的問題:

用Enter代替click:

from selenium.webdriver.common.keys import Keys

driver.find_element_by_css_selector("div.loginForm>input#loginBtn").send_keys(Keys.ENTER)

 
       


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM