selenuim【1】($x(‘xpath語法’)、WebDriverWait())

文章目錄

  • 初學selenuim記錄
    • 1、執行driver = webdriver.Chrome()后很久才打開瀏覽器
    • 2、瀏覽器多元素定位 $x(‘xpath語法’)
    • 3、打開瀏覽器driver.get("網址")執行了很久才開始定位元素:等待
      • (1)driver.set_page_load_timeout(t)
      • (2)WebDriverWait()

初學selenuim記錄

1、執行driver = webdriver.Chrome()后很久才打開瀏覽器

尚未解決,一會很快打開一會很慢打開

2、瀏覽器多元素定位 $x(‘xpath語法’)

console里面調試xpath 定位的語法是 :$x()
在console里面通過 $x(‘xpath語法’) 可以確定 xpath 語法是否寫正確,方便報錯時排查問題

# //*[@id="leftcolumn"]/a[1]
# //*[@id="leftcolumn"]/a[2]
# //*[@id="leftcolumn"]/a[3]
# console里面調試xpath 定位的語法是 :$x()   ;
# 在console里面通過 $x(‘xpath語法’) 可以確定 xpath 語法是否寫正確,方便報錯時排查問題
# $x('//*[@id="leftcolumn"]/a')   (74)

請添加圖片描述

3、打開瀏覽器driver.get(“網址”)執行了很久才開始定位元素:等待

selenium元素操作等方法是需要等待頁面所有元素完全加載完成后才開始執行的,所以在頁面未完成加載前,代碼會一直等待頁面加載不繼續執行。

(1)driver.set_page_load_timeout(t)

解決辦法參考資料:
【selenium】解決頁面加載時間過長問題
解決 selenium 加載網頁阻塞的問題

  • 設置等待時間:driver.set_page_load_timeout(0.1)
  • 超時即拋出異常:try: except TimeoutException:
  • 超時后執行Javascript停止頁面加載:driver.execute_script(‘window.stop()’)
# 設置WebDriver的頁面加載時間(set_page_load_timeout),
# set_page_load_timeout(time) 方法可以設置頁面的加載超時時間
# 在頁面加載超出設置時間時會報錯,Timed out receiving message from renderer: time
driver.set_page_load_timeout(5)  # 設置頁面加載時間miao
PrintTime.NowTime("控制瀏覽器,訪問頁面")
start = time.time()
try:driver.get("https://www.runoob.com/html/html-tutorial.html")  # 控制測覽器,訪問
except TimeoutException:# 超時后執行Javascript停止頁面加載PrintTime.NowTime("Time Out")driver.execute_script('window.stop()')
# 顯示等待:WebDriverWait()
WebDriverWait(driver, 5, 0.1).until(lambda x: x.find_element_by_id('kw'))
print('the page is loaded')
end = time.time()
# 計算頁面加載時間
print(end - start)
# 設置頁面加載時間的方式只適用于使用 get() 方式打開網頁,如果是通過操作進行跳轉的頁面不適用

(2)WebDriverWait()

解決辦法參考資料:
webdriver中的等待——主要講解WebDriverWait()

- 顯示等待:WebDriverWait()

WebDriverWait(driver,timeout,poll_frequency=0.5,ignored_exceptions=None)

driver:瀏覽器驅動
timeout:最長超時時間,默認以秒為單位
poll_frequency:檢測的間隔步長,默認為0.5s
ignored_exceptions:超時后的拋出的異常信息,默認拋出NoSuchElementExeception異常。

- 與until()或者until_not()方法結合使用

WebDriverWait(driver,10).until(method,message="")

在設置時間(10s)內,等待后面的條件發生。如果超過設置時間未發生,則拋出異常。在等待期間,每隔一定時間(默認0.5秒),調用until或until_not里的方法,直到它返回True或False.

- 匿名函數:lambda

# lambda 形式參數 : 函數表達式
sum_1 = lambda arg1, arg2: arg1 + arg2
# lambda是一個表達式,可以被命名,其中arg1, arg2是形式參數,arg1 + arg2 函數表達式
sum_1(1,2)
# 返回結果 3

等待時間為10秒,每0.5秒檢查一次,然后使用匿名函數等待直到找到id為’kw’的元素

# 設置等待
wait = WebDriverWait(driver,10,0.5)
# 使用匿名函數
# lambda x: x2 表示一個接受參數x并返回x2的匿名函數
wait.until(lambda diver:driver.find_element_by_id('kw'))

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

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

相關文章

事務及SpringBoot中的事務開啟

目錄 1.什么是事務? 2.事務的四大特性? 3.SpringBoot中怎樣開啟事務 1.開啟事務支持 2.在需要開啟事務的方法或類上使用Transactional 3.通過配置類來開啟全局事務 1.什么是事務? 事務是指在數據庫管理系統中執行的一系列操作的邏輯單元。事…

基于SpringBoot+vue+elementui在線教育系統詳細設計實現

前言 ??博主介紹:?專注于Java、小程序技術領域和畢業項目實戰??? ???? 精彩專欄 推薦訂閱???? 2024年Java精品實戰案例《100套》 ??文末獲取源碼聯系?? ??文末獲取源碼+數據庫?? 感興趣的可以先收藏起來,還有大家在畢設選題,項目以及論文編寫等相…

外包干了7個月,技術退步明顯.......

先說一下自己的情況,大專生,18年通過校招進入北京某軟件公司,干了接近4年的功能測試,今年年初,感覺自己不能夠在這樣下去了,長時間呆在一個舒適的環境會讓一個人墮落! 而我已經在一個企業干了四年的功能測…

智慧旅游+數字化景區整體解決方案:文件全文83頁,附下載

關鍵詞:智慧景區建設,智慧旅游一體化平臺,數字化景區建設,智慧旅游建設,智慧景區解決方案,智慧文旅解決方案,智慧旅游解決方案 一、景區智慧旅游建設需求與背景分析 1、技術發展背景 隨著信息…

Unity | Shader基礎知識(第十集:shader常用外部資產單詞速成)

目錄 一、外部資產簡介 二、常用的外部資產單詞 三、常用的外部資產單詞和引入內部 四、圖片資產外部調整的具體講解 1.Tiling,中文:鋪地磚 2.Offset,中文:偏移 五、作者的話 一、外部資產簡介 在第六集中,我們…

RabbitMQ的常見工作模式

Work queues 工作隊列模式 模式說明 通過Helloworld工程我們已經能夠構建一個簡單的消息隊列的基本項目,項目中存在幾個角色:生產 者、消費者、隊列,而對于我們真實的開發中 ,對于消息的消費者通過是有多個的。 比如在實現用戶注冊功能時&…

【OpenCV】繪制桌面鎖屏時鐘

OpenCV 是一個開源的計算機視覺(Computer Vision)與機器學習軟件庫,提供了多種圖像處理算法與接口,用于解決計算機視覺相關問題。OpenCV 支持多平臺與多語言,本文主要記錄如何使用 OpenCV-Python 繪制桌面鎖屏時鐘。 目…

一、環境配置

一、下載Ubuntu18.04版本鏡像 我的電腦配置比較低(08年奧運限定版哦),使用的是虛擬機VMware進行安裝Ubuntu18.04版,跟書上使用的一樣 Ubuntu 18.04鏡像 別下載錯了哈 二、VMware下安裝Ubuntu18.04操作系統 之前寫過相關的博文,詳細配置可…

軟件測試——性能測試

目錄 一、性能測試簡介 二、性能測試指標 三、性能測試的流程 四、Jmeter簡介 五、Jmeter常見測試框架 六、Jmeter錄制腳本 七、腳本增強 八、Jmeter腳本參數化 九、斷言 十、關聯 十一、JDBC請求 十二、分布式測試 十三、性能測試報告 一、性能測試簡介…

API接口技術開發拼多多接口鏈接采集實時銷量、SKU信息、券后價格、優惠券信息API接入步驟及演示示例

要實現拼多多接口鏈接采集實時銷量、SKU信息、券后價格、優惠券信息API接入步驟及演示示例,首先需要了解拼多多開放平臺的相關API接口。以下是一個簡單的Java示例,使用requests庫調用拼多多開放平臺的API接口: 注冊并登錄開放平臺&#xff0c…

【LeetCode】一周中的第幾天+ 一年中的第幾天

2023-12-30 文章目錄 一周中的第幾天方法一:模擬思路步驟 方法二:調用庫函數方法三:調用庫函數 [1154. 一年中的第幾天](https://leetcode.cn/problems/day-of-the-year/)方法一:直接計算思路: 方法二:調用…

react Hook useEffect的基本使用及注解

一、概述 useEffect是React提供的一個Hook,用于在函數組件中執行副作用操作。副作用操作通常包括數據獲取、訂閱事件、手動操作DOM等。useEffect可以讓我們在函數組件中模擬類組件的生命周期方法(如componentDidMount、componentDidUpdate、componentWi…

vue3+ts實現圖片預覽功能

首先&#xff0c;需要創建一個Vue組件&#xff0c;用于顯示圖片和預覽圖。 <template><div><img :src"imageSrc" mouseover"showPreview" mouseout"hidePreview" /><div v-if"previewVisible" class"previ…

【計算機考研】學碩還是專碩?

這里面沒有什么更好的選擇&#xff0c;大家都知道專碩錄取人數多&#xff0c;學碩錄取人數上&#xff0c;博弈一直存在 單就考研的難度上來說&#xff0c;專碩的難度確實要比學說低很多的&#xff0c;同樣的專業課的情況下&#xff0c;專碩的考研數學考的是數學二和英語二&…

rk3568 gamc0 控制器寄存器配置不了導致連接不上phy

系統啟動 GMAC 的驅動開機 log 上出現打印&#xff1a;No PHY found 或者 Cannot attach to PHY。查閱rk 官方gmac 配置指導手冊出現改問題的原因可能如下&#xff1a; 但反復檢查硬件和軟件發現都沒問題。看內核啟動日志發現gamc0 在啟動過程中讀取gmac0 的版本id是讀取不到&a…

P2440 木材加工

題目背景 要保護環境 題目描述 木材廠有 &#xfffd;n 根原木&#xff0c;現在想把這些木頭切割成 &#xfffd;k 段長度均為 &#xfffd;l 的小段木頭&#xff08;木頭有可能有剩余&#xff09;。 當然&#xff0c;我們希望得到的小段木頭越長越好&#xff0c;請求出 &a…

表格自定義音頻播放組件

1.在使用的地方調用 <Audiosvue ref"audio" class"audio-box" :audioFile"item.cont"></Audiosvue> 2.引入組件 import Audiosvue from "/components/audio"; 3.組件 <template><div><div style"d…

優化Vue項目中 WebStorm:2023.3 對 CSS 和 HTML 的默認注釋

前言 WebStorm是一種基于JetBrains IntelliJ平臺的集成開發環境&#xff08;IDE&#xff09;&#xff0c;專門用于Web開發。它支持JavaScript、HTML和CSS等語言&#xff0c;并提供了豐富的功能和工具&#xff0c;以提高開發人員的效率。但是&#xff0c;在開發Vue項目中發現&a…

(科目三)計算機操作系統

1、操作系統的基本概念及功能 1.1概念 一、操作系統的概念 操作系統是運行在裸機之上的&#xff0c;控制和管理計算機硬件和軟件資源、合理組織計算機工作流程一級方便用戶操作的程序集合。 操作系統由一套分層次的控制程序組成&#xff0c;是計算機硬件的一級擴充是軟件系…

【爬蟲逆向實戰 逆向滑塊 Python+Node】今天逆向的網站有點嘿嘿,還是僅供學習,別瞎搞

逆向日期&#xff1a;2024.03.01 使用工具&#xff1a;Node.js、Python 加密方法&#xff1a;AES標準算法 文章全程已做去敏處理&#xff01;&#xff01;&#xff01; 【需要做的可聯系我】 AES解密處理&#xff08;直接解密即可&#xff09;&#xff08;crypto-js.js 標準算…