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

林堯彬發表於2020-04-04

出現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) 

 

轉載於:https://www.cnblogs.com/rdltest/p/8560491.html

相關文章