Selenium 元素不能定位總結

目錄

元素不能定位總結:

1、定位語法錯誤:

定位語法錯誤,如無效的xpath,css selector,dom路徑錯誤,動態dom

定位語法錯誤,動態路徑(動態變化)

定位策略錯誤,如dom沒有id用id定位當然定位,使用dom中不存在的屬性定位

解決辦法:

2、元素未顯示

等待時間不夠

解決辦法:

元素隱藏在其他元素下(如列表選項,二級窗口),需要交互才展示

解決辦法:

3、元素在dom中存在多個,未使用正確的查找方法

解決辦法:

解決辦法:

4、selenium自身問題:

解決辦法:

5、元素不在當前視覺范圍

解決辦法:

6、其他原因

網絡異常

瀏覽器窗口異常關閉

網站后臺異常頁面無法加載


元素不能定位總結:


1、定位語法錯誤:

  • 定位語法錯誤,如無效的xpath,css selector,dom路徑錯誤,動態dom

  • 定位語法錯誤,動態路徑(動態變化)

  • 定位策略錯誤,如dom沒有id用id定位當然定位,使用dom中不存在的屬性定位

解決辦法:

建議編碼時現在瀏覽器調試模式下使用編寫的xpath、css selector?在待測頁面定位一下,看能不能識別到元素

2、元素未顯示

  • 等待時間不夠

一些頁面需要加載的資源比較多:如圖片、樣式、js動態文件等,因此如果頁面沒有加載完的話,有些元素是不會顯示的,也定位不到

解決辦法:

使用webdriverwait +顯性條件來增加等待時間

WebDriverWait(self.driver, 15).until(EC.visibility_of_all_elements_located(loc))

常見的顯性條件如下:

visibility_of_all_elements_located

用于檢查的DOM上是否存在所有元素的期望頁面并可見。可見性意味著元素不僅
顯示,但也具有大于0的高度和寬度。定位器-用于查找元素一旦找到并可見WebElement,就返回其列表


text_to_be_present_in_element

檢查給定文本是否存在于指定的元素。定位器,文本

invisibility_of_element_located

檢查元素是否不可見的期望出現在DOM上。用于查找元素的定位器

number_of_windows_to_be

期望窗口數為某個值

  • 元素隱藏在其他元素下(如列表選項,二級窗口),需要交互才展示

一些元素隱藏在另外一些組件下面,如列表組件中的選項,窗口組件中的文字、按鈕等

解決辦法:

等其他條件滿足再操作

3、元素在dom中存在多個,未使用正確的查找方法

例如定位語法在頁面定位到多個元素未使用find_elements而是用find_element,find_element默認查找第一個就返回因此可能查不到想要查找的元素。這種情況如果要交互的元素不是第一個就會報異常了。

解決辦法:

使用find_elements定位多個元素

另外還有可能查找第一個dom在頁面沒有顯示,這種情況是dom能找到,但是這個元素沒有在頁面展示。什么意思呢?就是說是個偽元素,這個元素在頁面是沒有寬度和高度的因此也會報錯。這種情況可以使用顯性條件(excepted condition)“visibility_of_element_located”來查找,它表示元素的長寬不為0,保證元素在頁面是存在的。

解決辦法:

使用顯性條件避免定位到偽元素


4、selenium自身問題:

如圖表元素(canvas,svg),由于圖表元素是使用js繪制的,對selenium來說相當于一張圖片,所以使用dom定位不到

解決辦法:

借助第三方庫或者圖形識別來處理


5、元素不在當前視覺范圍

待操作元素在其他windows、frame、iframe、alert等

解決辦法:

這個時候需要需要切換到新窗口、frame、iframe、alert才能定位到。

6、其他原因

網絡異常

有些時候網絡連接異常會導致頁面未加載成功,故而無法操作頁面

瀏覽器窗口異常關閉

測試清理使用了driver.close()關閉了窗口,導致后面的會話異常無法執行后續測試

網站后臺異常頁面無法加載

例如應用發版部署中,應用未完全啟動,故而無法查找頁面元素

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/160938.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/160938.shtml
英文地址,請注明出處:http://en.pswp.cn/news/160938.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

研發探索:導購APP、查券返利機器人與淘客系統,全面對比與選擇

研發探究:導購APP、查券返利機器人與淘客系統,全面對比與選擇 在互聯網購物的時代,導購APP、淘客機器人和微賺淘客系統成為了消費者們的三大好幫手。它們各具優勢,但也存在一些不足。本文將為您詳細對比這三種工具,幫…

vue history路徑編碼

記錄今天遇到的一個問題: 問題現狀 有一個需要前端偽造302進行重定向的需求,我們需要將這樣的一個路徑:http://xxx.com/system-name/#/index,拼接在跳轉地址的后面,進行重定向。拼接的方式是這樣的: htt…

攻防世界-web-Confusion1

1. 題目描述 打開鏈接,如圖 點擊Login和Rigister,都報錯 但是有提示 指出了flag所在的位置,題目中直接能獲取到的信息暫時就這么些了 2. 思路分析 既然告訴了我們flag文件的位置,那么要讀取到這個文件,要么是任意文…

AI輔助帶貨直播場景源碼系統 附帶網站的搭建教程

互聯網技術的發展和普及,直播帶貨行業迅速崛起。然而,直播帶貨在帶來商機的同時,也面臨著諸多挑戰。如直播內容缺乏新意、轉化率低等問題。針對這些問題,AI輔助帶貨直播場景源碼系統應運而生,旨在利用人工智能技術&…

【高級滲透篇】網絡安全面試

【高級滲透篇】網絡安全面試 1.權限維持2.代碼安全Python語法相關 1.權限維持 Linux權限維持方法論 Windows權限維持方法論 2.代碼安全 Python 語法相關 1、Python的值類型和引用類型是哪些 Python 中的值類型包括: 數字類型(如整數、浮點數、復數…

對接蘋果支付退款退單接口

前言 一般而言,我們其實很少對接退款接口,因為退款基本都是商家自己決定后進行操作的,但是蘋果比較特殊,用戶可以直接向蘋果發起退款請求,蘋果覺得合理會退給用戶,但是目前公司業務還是需要對接這個接口&am…

試試MyBatis-Plus可視化代碼生成器,太香了,你一定會感謝我

前言 在基于Mybatis的開發模式中,很多開發者還會選擇Mybatis-Plus來輔助功能開發,以此提高開發的效率。雖然Mybatis也有代碼生成的工具,但Mybatis-Plus由于在Mybatis基礎上做了一些調整,因此,常規的生成工具生成的代碼…

PC端使子組件的彈框關閉

子組件 <template><el-dialog title"新增部門" :visible"showDialog" close"close"> </el-dialog> </template> <script> export default {props: {showDialog: {type: Boolean,default: false,},},data() {retu…

【JavaSE】-5-嵌套循環

回顧 一、java語言特點 二、配置java環境 path 三、記事本 javac -d . java 包名.類名 四、eclipse 五、變量 定義變量 數據類型 變量名值; 六、相關的數據類型 ? 基本&#xff08;四類 、8種&#xff09;、引用 ? 類型轉換&#xff08;自動、強制&#xff09; ? 運…

Java面向對象(高級)-- 類中屬性賦值的位置及過程

文章目錄 一、賦值順序&#xff08;1&#xff09;賦值的位置及順序&#xff08;2&#xff09;舉例&#xff08;3&#xff09;字節碼文件&#xff08;4&#xff09;進一步探索&#xff08;5&#xff09;最終賦值順序&#xff08;6&#xff09;實際開發如何選 二、(超綱)關于字節…

1992-2021年省市縣經過矯正的夜間燈光數據(GNLD、VIIRS)

1992-2021年省市縣經過矯正的夜間燈光數據&#xff08;GNLD、VIIRS&#xff09; 1、時間&#xff1a;1992-2021年3月&#xff0c;其中1992-2013年為年度數據&#xff0c;2013-2021年3月為月度數據 2、來源&#xff1a;DMSP、VIIRS 3、范圍&#xff1a;分區域匯總&#xff1a…

SpringBoot : ch05 整合Mybatis

前言 隨著Java Web應用程序的快速發展&#xff0c;開發人員需要越來越多地關注如何高效地構建可靠的應用程序。Spring Boot作為一種快速開發框架&#xff0c;旨在簡化基于Spring的應用程序的初始搭建和開發過程。而MyBatis作為一種優秀的持久層框架&#xff0c;提供了對數據庫…

【Linux】-進程間通信-共享內存(SystemV),詳解接口函數以及原理(使用管道處理同步互斥機制)

&#x1f496;作者&#xff1a;小樹苗渴望變成參天大樹&#x1f388; &#x1f389;作者宣言&#xff1a;認真寫好每一篇博客&#x1f4a4; &#x1f38a;作者gitee:gitee? &#x1f49e;作者專欄&#xff1a;C語言,數據結構初階,Linux,C 動態規劃算法&#x1f384; 如 果 你 …

中低壓MOSFET 2N7002T 60V 300mA 雙N通道 采用SOT-523封裝形式

2N7002KW小電流雙N通道MOSFET&#xff0c;電壓60V電流300mA&#xff0c;采用SOT-523封裝形式。低Ros (on)的高密度單元設計&#xff0c;堅固可靠&#xff0c;具有高飽和電流能力&#xff0c;ESD防護門HBM2KV。可應用于直流/直流轉換器&#xff0c;電池開關等產品應用上。

Redis JDBC

1、導入依賴&#xff1a; <dependency><groupId>redis.clients</groupId><artifactId>jedis</artifactId><version>4.4.3</version></dependency> 2、連接JDBC public class JedisDemo05 {public static void main(String[]…

成為AI產品經理——AI產品經理工作全流程

一、業務背景 背景&#xff1a;日常排球訓練&#xff0c;中考排球項目和排球體測項目耗費大量人力成本和時間成本。 目標&#xff1a;開發一套用于實時檢測排球運動并進行排球墊球計數和姿勢分析的軟件。 二、產品工作流程 我們這里對于產品工作流程的關鍵部分進行講解&…

「Docker」如何在蘋果電腦上構建簡單的Go云原生程序「MacOS」

介紹 使用Docker開發Golang云原生應用程序&#xff0c;使用Golang服務和Redis服務 注&#xff1a;寫得很詳細 為方便我的朋友可以看懂 環境部署 確保已經安裝Go、docker等基礎配置 官網下載鏈接直達&#xff1a;Docker官網下載 Go官網下載 操作步驟 第一步 創建一個…

Java 多線程之 DCL(Double-Checked Locking)

文章目錄 一、概述二、使用方法 一、概述 DCL&#xff08;Double-Checked Locking&#xff09;是一種用于在多線程環境下實現延遲初始化的技術。它結合了懶加載&#xff08;Lazy Initialization&#xff09;和線程安全性&#xff0c;用于在需要時創建單例對象或共享資源。它的…

什么是SEO?(初學者建議收藏)

前言 在這個充滿機遇和挑戰的時代&#xff0c;人們不斷追求著更好的生活和更高的成就。無論是個人還是企業&#xff0c;都需要不斷提升自己的競爭力&#xff0c;才能在激烈的市場競爭中獲得成功。因此&#xff0c;我們需要不斷學習和成長&#xff0c;學會適應變化和面對挑戰。…