python+selenium 自動化過程中遇到的元素不可見時間以及webelement不可見的處理方法


出現Element is not clickable at point錯誤或者NoSuchElement的原因🈶️以下幾點:

1、這個元素被點擊的時候不在頁面可見范圍內 

解決方法:使用顯式等待方法等待元素可見或者可點擊。

2、這個元素還未加載出來

解決方法:使用sleep休眠幾秒等待加載

3、這個可被點擊的元素被其他元素/蒙層所覆蓋了 

解決方法:對於下拉菜單鼠標懸停等使用ActionChains類解決

4、在Iframe里

解決方法:將焦點轉至iframe里

 

注:頁面等待方法(python)

   a.顯式等待:使WebDriver等待某個條件成立時繼續執行,否則超過時長就跑出超時異常

     使用方法:

       

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

 

         

       frameElement=WebDriverWait(driver,30,0.5).until(EC.presence_of_element_located((By.XPATH,xpath)))

 

     其中WebDriverWait(driver瀏覽器驅動,timeout最長超過時間,檢測間隔時間S),在設置時間內,每隔一段時間檢測一下當前頁面是否存在,超過時間拋異常

     WebDriverWait()一般由utill()或until_not()配合使用

     until(method,message='')調用該方法提供的驅動程序作為一個參數,知道返回值為True

     EC----expected_conditions類提供了一系列的場景判斷方法,本例子使用了presence_of_element_located()方法判斷元素是否存在

 

     b.隱式等待

      WebDriver.implicitly_wait(10)通過一定的時長來等待頁面上某元素加載完成。

        注:單位S,10s並不是一個固定的等待時間他不影響腳本的執行速度,不針對頁面上的某一元素進行等待,如果元素可以定位,繼續執行,不可以定位會已輪詢的方式不斷判斷元素是否被定位到,無法定位拋出異常。

     c.sleep休眠 

      希望腳本執行到某個位置做固定時間的休眠

      

from time import sleep

    sleep(10) 

 


免責聲明!

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



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