Selenium應用中的核心JavaScript操作技巧

Selenium是一款強大的瀏覽器自動化測試工具,其操作瀏覽器的能力部分來自于其內嵌的JavaScript執行引擎。這使得Selenium不僅能夠模擬用戶在瀏覽器中的各種操作,還能執行復雜的JavaScript腳本,以實現更為精細的控制。本文將探討如何通過Selenium應用中的核心JavaScript操作來提升自動化測試的效能和靈活性。

1. 觸發事件

通過Selenium可以直接觸發JavaScript事件。例如,有時候標準的?click()?方法可能不起作用,這時候可以通過JavaScript直接觸發點擊事件:

driver.execute_script("arguments[0].click();", element);

在這里,arguments[0]?代表了傳遞給?execute_script?方法的第一個參數,即?element,這是你想要點擊的頁面元素。

2. 處理滾動

對于在頁面上的不可見元素,滾動到元素可見再操作是很有必要的:

driver.execute_script("arguments[0].scrollIntoView(true);", element);

這樣可以確保元素在視窗中可見。

3. 修改元素屬性

有時你可能需要直接更改頁面元素屬性,這在表單填寫中特別有用,比如移除只讀屬性:

driver.execute_script("arguments[0].removeAttribute('readonly')", element);

4. 獲取瀏覽器和頁面信息

JavaScript可以用于獲取瀏覽器的詳細信息,例如屏幕分辨率或者頁面的滾動位置等:

screen_width = driver.execute_script("return screen.width;")
screen_height = driver.execute_script("return screen.height;")
scrollTop = driver.execute_script("return document.documentElement.scrollTop;")

5. 異步執行

Selenium Webdriver還支持異步執行JavaScript,可以等待異步腳本的執行結果。使用?execute_async_script?方法:

driver.execute_async_script("""var callback = arguments[arguments.length - 1];someAsyncFunction().then(function() {callback();});
""")

其中?someAsyncFunction()?表示某個異步操作,當這個異步操作完成時會調用?callback?函數。

6. 處理局部頁面刷新

當頁面使用AJAX技術局部更新時,可以通過執行JavaScript來檢測這一更變。例如,等待一個元素的指定屬性變化:

wait.until(lambda driver: driver.execute_script("return document.getElementById('element-id').getAttribute('attribute-name') == 'desired-value'"))

7. 復雜的元素操作

有些元素的交互可能很復雜,例如canvas或者某些通過JavaScript動態生成的控件,可能必須通過JavaScript來模擬用戶的操作:

driver.execute_script('canvas元素的處理邏輯')

8. 日期控件操作

對于一些日期控件,直接通過Selenium是很難進行操作的,可以通過JavaScript為控件設置正確的日期值:

driver.execute_script("document.getElementById('date-picker').value = '2023-11-25'")

9. 監聽和干預網絡請求

使用JavaScript可以監聽甚至干預頁面發起的網絡請求:

driver.execute_script("""(function() {var originalFetch = window.fetch;window.fetch = function() {console.log('Intercepted fetch call');return originalFetch.apply(this, arguments);};})();
""")

10. 其他DOM操作

除了以上提到的幾個例子之外,JavaScript允許你執行幾乎任何DOM操作,從而能夠精確地控制和檢測頁面的表現和行為。

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

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

相關文章

《Linux 基礎指令實戰:新手入門的命令行操作核心教程(第一篇)》

前引:當你第一次面對 Linux 系統中那片閃爍著光標、只有黑白字符的終端界面時,或許會和很多初學者一樣感到些許茫然:這些由字母和符號組成的 “指令” 究竟該如何輸入?它們又能完成哪些神奇的操作?其實,Lin…

03.【Linux系統編程】基礎開發工具1(yum軟件安裝、vim編輯器、編輯器gcc/g++)

目錄 1. 軟件包管理器 1.1 什么是軟件包 1.2 Linux軟件生態 1.3 yum具體操作 1.3.1 查看軟件包 1.3.2 安裝軟件 1.3.3 卸載軟件 1.3.4 注意事項(測試網絡) 1.3.5 yum指令集總結 1.4 yum源目錄、安裝源 2. Vim編輯器的使用 2.1 Linux編輯器-vim使用 2.2 vim的基本概…

3DMAX自動材質開關插件AutoMaterial安裝和使用方法

3DMAX自動材質開關AutoMaterial,是一個3dMax腳本插件,它根據材質編輯器中當前活動的材質自動將材質應用于3dMax中新創建的對象,也適用于您復制的沒有材質的對象。它作為一個開關,可以綁定到按鈕或菜單來打開和關閉它。該工具的創建…

Linux內核調優實戰指南

內核調優通常通過修改內核運行時參數來實現,這些參數的配置文件是 Linux 系統中核心的性能調整點。 內核調優配置文件名稱 /etc/sysctl.conf: 這是最傳統和主要的內核參數配置文件。系統啟動時或手動執行 sysctl -p 命令時會讀取并應用其中的設置。/etc/sysctl.d/*.…

Java基礎常見知識點

Java 中 和 equals() 的區別詳解_java中與equals的區別及理解-CSDN博客https://blog.csdn.net/m0_64432106/article/details/142026852深入理解Java中方法的參數傳遞機制 - 悟小天 - 博客園https://www.cnblogs.com/sum-41/p/10799555.html浮點型精度是什么意思?為…

OD C卷 -【高效貨運】

文章目錄高效貨運高效貨運 貨車的額定載貨量為wt;貨物A單件重量為wa,單件運費利潤為pa;貨物B單件重量wb,單件運費利潤為pb;每次出車必須包含A、B貨物,且單件貨物都不可分割,總重量達到額定的載貨量wt;每次出車能夠獲取…

手動解壓并讀取geo 文件 series_matrix_table_begin series_matrix_table_end之間的數據

手動解壓并讀取geo 文件 series_matrix_table_begin series_matrix_table_end之間的數據 1. 手動解壓并讀取文件內容 file_path <- “K:/download/geo/raw_data/GEO/GSE32967_series_matrix.txt.gz” 使用latin1編碼讀取文件所有行 con <- gzfile(file_path, “r”) all_…

主板硬件研發基礎--DP/DP++

現在的主板大多數使用的是比DP功能更加強大的DP++。 DisplayPort++(DP++)是 DisplayPort 技術的增強版,旨在提升與多種視頻接口的兼容性和連接性能。以下是關于它的詳細介紹: 功能特性 多協議兼容:DP++ 接口不僅支持 DisplayPort 標準的信號傳輸,還可以通過內部的轉換電…

科技行業新聞發布平臺哪家好?多場景推廣專業方案服務商推薦

面對海量得新聞發布平臺和碎片化的傳播場景&#xff0c;如何精準選擇推廣方案無疑是企業主面臨的一大難題&#xff0c;對于技術迭代迅速的科技行業更是如此。針對復雜的市場環境&#xff0c;一些專業的新聞發布平臺往往能夠針對性地給出營銷方案&#xff0c;并提供一定技術支持…

SystemVerilog 學習之SystemVerilog簡介

SystemVerilog簡介SystemVerilog是一種硬件描述和驗證語言&#xff08;HDVL&#xff09;&#xff0c;由Accellera開發并于2005年成為IEEE標準&#xff08;IEEE 1800&#xff09;。它在傳統Verilog基礎上擴展了高級驗證和設計功能&#xff0c;廣泛應用于數字電路設計、驗證及系統…

JavaWeb--day3--AjaxElement路由打包部署

&#xff08;以下內容全部來自上述課程及課件&#xff09; Ajax &#xff08;此章節純粹演示&#xff0c;因服務器端url鏈接失效&#xff0c;所以無法實戰&#xff09; 1. 同步與異步 同步&#xff1a; 瀏覽器頁面在發送請求給服務器&#xff0c;在服務器處理請求的過程…

IMF GDP的bug

IMF GDP 數據底子是官方數字&#xff0c;基本是沿用官方的&#xff0c;雖然經過修訂或估算&#xff0c;存在4大“bug”&#xff1a;1. 依賴官方上報&#xff0c;真實性不保證2. PPP GDP 虛高&#xff0c;居民實際消費力低很多ppp gdp高&#xff0c;甚至gdp高的地方&#xff0c;…

第2篇:數據持久化實戰

在上一篇中&#xff0c;我們構建了一個基于內存存儲的食譜助手。說實話&#xff0c;內存存儲雖然簡單&#xff0c;但有個致命問題&#xff1a;程序一重啟&#xff0c;數據就全沒了。 所以這篇我們要解決數據持久化的問題&#xff0c;將食譜助手從內存存儲升級到SQLite數據庫。 …

Java推薦系統與機器學習實戰案例

基于Java的推薦系統與機器學習實例 以下是一些基于Java的推薦系統與機器學習實例的參考方向及開源項目,涵蓋協同過濾、矩陣分解、深度學習等常見方法。內容根據實際項目和技術文檔整理,可直接用于學習或開發。 協同過濾實現 用戶-物品評分預測 使用Apache Mahout的基于用戶…

AI生成內容檢測的綜合方法論與技術路徑

一、AI內容檢測技術的分類與原理當前AI內容檢測技術主要分為四大類&#xff0c;每類都有其獨特的原理和應用場景&#xff1a;1. 基于語言特征分析的檢測方法這類方法通過挖掘人類寫作與AI生成文本之間的統計學差異進行判斷&#xff1a;1.1 詞匯使用模式分析AI生成的文本在詞匯選…

可可圖片編輯 HarmonyOS(5)濾鏡效果

可可圖片編輯 HarmonyOS&#xff08;5&#xff09;濾鏡效果 前言 可可圖片編輯也實現了濾鏡效果&#xff0c;主要是利用 Image組件的 colorFilter 屬性實現。濾鏡的關鍵屬性 colorFilter colorFilter 的主要作用是給圖像設置顏色濾鏡效果。 其核心原理是使用一個 4x5 的顏色矩陣…

< JS事件循環系列【二】> 微任務深度解析:從本質到實戰避坑

在上一篇關于 JS 事件循環的文章中&#xff0c;我們提到 “微任務優先級高于宏任務” 這一核心結論&#xff0c;但對于微任務本身的細節并未展開。作為事件循環中 “優先級最高的異步任務”&#xff0c;微任務的執行機制直接影響代碼邏輯的正確性&#xff0c;比如Promise.then的…

STM32 單片機開發 - SPI 總線

一、SPI 總線概念SPI 總線 --- Serial Peripheral Interface&#xff0c;即串行外設接口SPI 是摩托羅拉公司設計的一款 串行、同步、全雙工總線&#xff1b;SPI 總線是三線 / 四線制總線&#xff0c;分別是&#xff1a;SPI_SCK&#xff08;時鐘線&#xff09;、S…

區域醫院云HIS系統源碼,云醫院管理系統源碼,云診所源碼

云HIS源碼&#xff0c;云醫院管理系統源碼&#xff0c;云診所源碼&#xff0c;二級專科醫院云HIS系統源代碼&#xff0c;有演示云HIS&#xff0c;即云醫院管理系統&#xff0c;是一種運用云計算、大數據、物聯網等新興信息技術的醫療信息化解決方案。它重新定義了傳統的醫院信息…

Java基礎 9.11

1.第三代日期類前面兩代日期類的不足分析JDK 1.0中包含了一個java.uti.Date類&#xff0c;但是它的大多數方法已經在JDK1.1引Calendar類之后被棄用了。而Calendar也存在問題是&#xff1a;可變性&#xff1a;像日期和時間這樣的類應該是不可變的偏移性&#xff1a;Date中的年份…