python+selenium-UI自動框架之[優化]元素查找和BasePage頁面

痛點:在頁面查找元素的時候會遇到找不到或者其他無法處理某個字段的情況,又或者想要在輸出的log或者report里面顯示這個字段名稱,這時候加上字段名稱就很重要!

[3]python+selenium - UI自動框架之封裝查找元素icon-default.png?t=N7T8https://mp.csdn.net/mp_blog/creation/editor/139117915對上面一篇文章做優化

Element.py

from typing import Optional, Union
from selenium.common import TimeoutException, StaleElementReferenceException, NoSuchElementException
from selenium.webdriver.common.by import By
from selenium.webdriver.remote.webdriver import WebDriver
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as ec
from public.log import logclass ElementFinder(object):def __init__(self, driver: WebDriver):self._driver = driverdef find_element(self, by: Union[By, str], value: str, display_name: Optional[str] = None,  time: int = 5, internal=0.5):_locator = (by, value)if display_name is None:display_name = valuefor _ in range(2):log.info('[100]:find element: {ele}'.format(ele=display_name))try:_element = WebDriverWait(self._driver, time, internal).until(ec.presence_of_element_located(_locator))return _elementexcept TimeoutException:log.exception('[400]:%s not find ' % display_name)except StaleElementReferenceException as e:log.exception('[401]:StaleElementReferenceException %s' % e)continueexcept NoSuchElementException as e:log.exception('[402]: NoSuchElement %s' % e)except Exception as e:log.exception('[403]:unknown error %s' % e)break

舉個例子:

    inputBox = ('id', 'kw','input box')searchBtn = ('id', 'su', 'search button')

Note:元素定位的時候,可以加上字段的’名稱‘,當然也可以不加,這是一個非必要參數

相應地,在BasePage頁面調用查找元素函數的時候也需要做改動,因為傳給查找元素的參數多了一個字段。

[4]python+selenium - UI自動框架之封裝基類BasePage頁面icon-default.png?t=N7T8https://mp.csdn.net/mp_blog/creation/editor/140102485只對basePage里面的一個功能做改動,其他類似要自己手動改:

basePage.py

from selenium.common import WebDriverException
from public.elementFind import ElementFinder
from public.log import logclass BasePage(ElementFinder):def click(self, locator):_element = self.find_element(*locator)if not _element:log.warning('[400]element {ele} not exits'.format(ele=locator))for _ in range(2):try:_element.click()breakexcept WebDriverException as e:log.exception('[401]:click {ele} failed,{info}'.format(ele=locator, info=e))except Exception as e:log.warning('[404]:click {ele},unknown error:{error}'.format(ele=locator, error=e))raise 'StopTestCaseException'

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

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

相關文章

PHP微信小程序視頻圖文流量主變現小程序系統源碼

💰微信小程序新機遇!視頻圖文流量主變現秘籍🔑 🚀【流量變現新風口】🚀 還在為微信小程序的龐大流量如何轉化為真金白銀而苦惱嗎?今天,就帶你揭秘“微信小程序視頻圖文流量主變現小程序”的神…

GPT-5:探索NLP新紀元的無限可能

目錄 GPT-5: 定義自然語言處理新紀元的全方位突破引言: 邁向未來的語言之橋算法與架構: 深度進化的基石多模態融合: 超越文本的智慧對話連貫性與情境感知: 無縫交流的藝術個性化與定制化: 專屬服務的未來倫理與安全: 負責任的創新GPT系列發展史: 邁向卓越的每一步結語: 共創智能…

Linux賬戶和組管理——賬戶和工作組分類,用戶賬號文件,/etc/passwd文件中7個字段,id 命令

## 賬戶和工作組的分類 ### 用戶分為三類: - 超級賬戶——賬戶名為root,它具有一切權限,只有進行系統維護(例如:建立用戶等)或其他必要情形下才用超級用戶登錄,以避免系統出現安全問題。 - 系統賬戶——是Linux系統正常…

幾種常用的產生負電源的方法

電源電路是電路設計的重要環節,一般情況下,單電源能實現功能的用單電源就行,可選的方案很多,DC-DC、LDO等芯片很多。有時候,單電源無法滿足需求時,就必須用到負電源。 今天就來介紹幾種常用的負電源產生的…

北京金融聯盟創新應用2024年第五期“圓桌會議”成功召開

來自信創CPU廠商、金融科技相關企業、以及銀行證券等機構的數十名參會代表齊聚北京,圍繞信創服務器芯片架構使用策略等議題,展開了深入的討論,為金融信創與數字化轉型的進一步深入發展提供了豐富的建議和參考。 會議圍繞信創服務器芯片架構使…

什么是業務架構、數據架構、應用架構和技術架構

TOGAF(The Open Group Architecture Framework)是一個廣泛應用的企業架構框架,旨在幫助組織高效地進行架構設計和管理。而TOGAF的核心就是由我們熟知的四大架構領域組成:業務架構、數據架構、應用架構和技術架構。 所以今天我們就來聊聊,企業…

高通平臺 android7.1 藍牙的可見性設置

1、情景 本機設備只打開藍牙開關,但不停留在設置里面藍牙頁面時,其他設備掃描不到本機設備。 2、Android7.1中,默認的行為是,只有在設置里面的藍牙頁面,才會開啟藍牙的可見性;如果只是打開下拉欄的藍牙快捷…

基于MacOS系統Sonoma 14.5的SSH服務禁止密碼登錄

基于系統Sonoma 14.5,不同系統有所差異。 修改sshd_config文件 sudo vim /etc/ssh/sshd_config找到以下兩行取消注釋,修改值為 no PasswordAuthentication no KbdInteractiveAuthentication no重啟sshd服務 # 關閉服務 sudo launchctl unload -w /System…

安泰電壓放大器的選型方案是什么

電壓放大器是一種常見的電路元件,廣泛應用于各種電子設備中。在選擇電壓放大器的時候,我們需要考慮一系列因素,以確保選型方案能夠滿足實際需求。下面安泰電子將詳細介紹電壓放大器選型的主要考慮因素,包括應用需求、技術性能、成…

自己寫的逆向案例十二——一號店登錄密碼逆向

網址:1號店登錄 找到登錄接口: 查看棧 直接跟棧,不多說 ,點擊doubblesubmit棧 很明顯發現加密位置,而且有很明顯的提示,這是一個標準RSA類型的,看到new JSEncrypt和setPublicKey就知道了&…

【AI大模型新型智算中心技術建設白皮書 2024】

文末有福利! 一、新算效——重塑計算架構 1.1 下一代 AI 芯片設計思路 以 GPU 為 代 表 的 高 性 能 并 行 計 算 芯 片 架 構 和 以 針 對 AI 領 域 專 用 加 速(DSA, Domain Specific Architecture,DSA)為代表的芯片架構是目…

setuptools打包-分發-安裝-發布

一、定義 學習網址setup.py 編寫打包安裝開源到PYPI中 二、實現 學習網址 https://python.iswbm.com/c08/c08_15.htmlsetup.py 編寫 采用分發工具setuptools進行發布,因此采用setuptools包進行setup.py的編寫 demo案例 from setuptools import setup, find_pack…

springboot下 創建TCO客戶端,并發送消息

import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service;import java.io.*; import java.net.Socket;/*** 請求tcp接口** author Mr丶s* date 2024/7/10 下午3:03* description*/ Slf4j Service public class TcpClientService {private Socket soc…

在Office里面無縫使用任何一家AI大模型,免費的!

昨天一個朋友說他在Word里面,用了一個插件,可以在右側和AI對話,然后把AI生成的內容載入到左邊的文檔中。 我當時心理的想法:我這是穿越了嗎?這不是我去年2月就實現,然后又扔掉的功能嗎? 是的&a…

paddla模型轉gguf

在使用ollama配置本地模型時,只支持gguf格式的模型,所以我們首先需要把自己的模型轉化為bin格式,本文為paddle,onnx,pytorch格式的模型提供說明,safetensors格式比較簡單請參考官方文檔,或其它教…

Springboot自習室在線預約系統-計算機畢業設計源碼050000

摘 要 遠程預約是一種全新的網絡租用方式,它通過互聯網突破了時間和空間限制,實現了便捷快速的預約與管理功能。在對數據信息有效組織并整合了一定使用功能后,遠程預約系統可以方便地實現預約與取消,以及信息查詢等功能。經過本人…

vscode gitee問題

如果提交報user.name和user.email錯誤時,在本地工作目錄中.git隱藏文件夾中,config文件添加,添加的名字和email地址--遠程git倉庫的登錄名字和email地址。 [user] name xxx email xxx 分支合并:是把別的分支合并到所在分支。

2024最適合小白的Midjourney教程,值得收藏!

一、Midjourney 的提示詞 1、提示可以包括一個或多個圖像 URL、多個文本短語以及一個或多個參數 1)Image Prompts(圖像提示):可以將圖像 URL 添加到提示中以影響最終結果的樣式和內容。圖像 URL 始終出現在提示的前面。文件應以.…

配置 Node.js 內存限制

配置 Node.js 內存限制 Node.js 應用程序通常需要配置堆內存的大小以優化性能和避免內存溢出問題。你可以通過命令行參數、環境變量或系統屬性來設置 Node.js 的內存限制。下面將分別介紹在 Windows、Linux 和 macOS 系統下的配置方法。 Windows 系統 1. 命令行參數方式 在…

爆款文案管理系統設計

設計一個爆款文案管理系統,目標是幫助營銷團隊高效地創建、管理并分析吸引人的文案,以提升產品或服務的市場吸引力和銷售轉化率。以下是一些關鍵功能和設計考量點: 1. 用戶友好界面 簡潔直觀的界面:確保系統界面清晰&#xff0c…