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

出現Element is not clickable at point錯誤或者NoSuchElement的緣由🈶️如下幾點:python

一、這個元素被點擊的時候不在頁面可見範圍內 web

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

二、這個元素還未加載出來ui

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

三、這個可被點擊的元素被其餘元素/蒙層所覆蓋了 code

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

四、在Iframe裏ci

解決方法:將焦點轉至iframe裏element

 

注:頁面等待方法(python)iframe

   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)
相關文章
相關標籤/搜索