当前位置: 首页 > article >正文

【Python】selenium获取定位元素大小、电脑屏幕的像素、屏幕尺寸信息、以及网页尺寸的方法

我们在使用selenium 进行自动化测试的时候,有时候会使用获取网页的大小做一些计算,例如测试进行滑动验证码时,需要计算滑块在屏幕的相对大小,就要用到以上这些部分的内容。

1.1 获取某个的位置信息:

button_ = driver.find_element(By.CSS_SELECTOR, 'XXX')
print("按钮元素位置信息:",button_ .rect)

这里的.rect 的 方法是 WebElement 对象提供的一个方法,用于获取元素的大小和位置信息。

在Selenium WebDriver中,find_element 方法用于定位页面上的单个元素,而.rect 则是获取这些元素的位置信息。

具体来说,rect 方法返回一个字典,包含以下键值对:

x: 元素相对于页面左上角的水平位置。
y: 元素相对于页面左上角的垂直位置。
width: 元素的宽度。
height: 元素的高度。

例如这里获取蓝色框的元素,可以计算出该元素的上述信息:
在这里插入图片描述
在这里插入图片描述

1.2 获取电脑屏幕的像素

import pyautogui
(windowx, windowy) = pyautogui.size()
print('电脑屏幕的像素  x:', windowx, 'y:', windowy)

在这里插入图片描述
这个结果可以得出你的屏幕的宽度和高度。

pyautogui.size()这个函数返回一个元组,其中包含屏幕的宽度和高度(以像素为单位)

这个信息,在使用selenium自动化测试,或者屏幕操作脚本的时候是很有用的,因为它可以帮助你确定屏幕上元素的位置,或者进行屏幕截图时,确定截图区域的大小。

不过,pyautogui.size() 函数返回的是整个屏幕的分辨率

如果你的设备有多个显示器,或者例如使用远程连接,那么它只会返回主显示器的分辨率。

如果你需要获取多个显示器的分辨率,你可能需要使用其他库,如 screeninfo 或者 pygetwindow

1.3 获取屏幕尺寸信息

screenx = driver.execute_script('return screen.width')
screeny = driver.execute_script('return screen.height')
print('屏幕尺寸  width:', screenx, 'height:', screeny)  

由于屏幕尺寸 和分辨率的区别:

屏幕尺寸描述的是显示器的物理尺寸
分辨率描述的是显示器可以显示的图像的清晰度

所以二者会有不同,如果我们要做网页上某个元素的相对大小计算的时候,需要用到物理尺寸的计算,也需要用到 屏幕分辨率的计算。

1.4 获取网页尺寸信息

time.sleep(3)
documentx = driver.execute_script('return document.documentElement.clientWidth')
documenty = driver.execute_script('return document.documentElement.clientHeight')
print('网页尺寸  width:', documentx, 'height:', documenty) 

这个方法使用的是selenium的webdriver,使用execute_script的方法获取网页的大小的方法。

在这里插入图片描述


http://www.kler.cn/a/403005.html

相关文章:

  • 《现代制造技术与装备》是什么级别的期刊?是正规期刊吗?能评职称吗?
  • 「Mac玩转仓颉内测版23」基础篇3 - 深入理解整数类型
  • PHP 高并发解决方案
  • 石油化工调度台的外观如何设计更有科技感
  • Git 提交的相对引用
  • 呼叫中心怎么对接大模型?
  • Java EE 【知识改变命运】01计算机的一些知识点
  • 异常检测作业
  • ubuntu.24安装cuda
  • 导入JUnit测试类jar包
  • Java面试之多线程并发篇(6)
  • el-cascader 使用笔记
  • 探索Linux软件包管理的进化之路:从源码编译到Snap包的飞跃
  • Python实现图片定位与自动输入文字
  • 七、利用CSS和多媒体美化页面的习题
  • OLED透明屏在零售行业有什么应用场景
  • SpringBoot项目升级到3.*,并由JDK8升级到JDK21
  • [ 跨域问题 ] 前后端以及服务端 解决跨域的各种方法
  • FIFO架构专题-拼接方案及FIFO读清案例
  • 使用 Axios 拦截器优化 HTTP 请求与响应的实践
  • 论文阅读 SeedEdit: Align Image Re-Generation to Image Editing
  • 绿光一字线激光模组:工业制造与科技创新的得力助手
  • 下单抽奖领取商品奖品之后还能继续抽奖问题处理
  • Flutter踩坑记录(二)-- GestureDetector+Expanded点击无效果
  • mysql中between and怎么用
  • 使用Go语言实现一个简单的HTTP服务器,提供静态文件服务。