屏幕自动化 (Screen)
屏幕自动化对象 Screen
用于获取屏幕属性以及操作屏幕。
Screen
对象提供以下方法:
方法名 | 描述 |
---|---|
screenRect | 获取指定监视器或所有屏幕的边界信息。 |
all | 获取所有屏幕的边界信息。 |
colorAt | 获取屏幕上特定点的颜色。 |
capture | 捕获屏幕上的特定矩形区域的截图。 |
captureToFile | 捕获屏幕截图并保存到指定文件路径。 |
highlight | 高亮显示屏幕上指定矩形区域。 |
takeScreenshot | 获取屏幕截屏并保存到指定文件路径。 |
类型定义
export class Screen {
static screenRect(moniter?: number): Rect
static all(moniter?: number): Rect[]
static colorAt(x: number, y: number): string;
static capture(rect?: Rect): Buffer;
static captureToFile(filePath: string, rect?: Rect): void;
static takeScreenshot(filePath: string, monitor?: number): string | void;
static highlight(rect: Rect, duration?: number);
// static screenSize(): {width: number, height: number}; // deprecated
}
class Screen():
def all() -> "List[Rect]"
def screenRect(monitor: Optional[int]=None) -> "Rect"
def colorAt(x: int, y: int) -> str
def capture(rect: Optional[Rect]=None) -> "bytearray"
def captureToFile(filePath: str, rect: Optional[Rect]=None) -> None
def highlight(rect: Rect, duration: Optional[int]=None) -> "any"
# def screenSize() -> TypedDict # deprecated 弃用
Rect类
Rect
类用于描述控件的形状和位置信息。在 CukeTest 中,所有控件都可以用一个矩形(Bounding Rectangle)来描述其位置和形状。Rect
对象包含以下属性:
- x:
number
类型,表示相对坐标的水平像素; - y:
number
类型,表示相对坐标的垂直像素; - width:
number
类型,表示矩形的宽度,单位为像素; - height:
number
类型,表示矩形的高度,单位为像素;
interface Rect {
x: number;
y: number;
width: number;
height: number;
}
class Rect:
x: int
y: int
width: int
height: int
API 介绍
screenRect(monitor)
获取指定监视器或所有屏幕的边界信息。
参数:
- monitor: (可选)要获取边界信息的监视器的编号。不传参数或传
-1
,会获取所有屏幕合并后的尺寸,数值上等于 Screen.capture 方法获取到截图的尺寸。传0
返回第一个显示屏,1
返回第二个,以此类推。
返回值:
Rect
对象,表示指定监视器的边界信息。
使用示例
以下示例展示了如何使用 Screen.screenRect
方法获取指定监视器的边界信息:
const { Screen } = require('leanpro.common');
// 获取主屏幕的边界信息
const mainScreenRect = Screen.screenRect();
console.log('Main Screen Rect:', mainScreenRect);
// 获取编号为 1 的监视器的边界信息
const monitor1Rect = Screen.screenRect(1);
console.log('Monitor 1 Rect:', monitor1Rect);
from leanproAuto import Screen
# 获取主屏幕的边界信息
main_screen_rect = Screen.screenRect()
print('Main Screen Rect:', main_screen_rect)
# 获取编号为 1 的监视器的边界信息
monitor1_rect = Screen.screenRect(1)
print('Monitor 1 Rect:', monitor1_rect)
在这个例子中,我们首先获取主屏幕的边界信息,然后获取编号为 1 的监视器的边界信息,并将这些信息打印出来。
all()
获取所有屏幕的边界信息。这对于多屏幕环境尤其有用,可以通过此方法获取每个屏幕的位置和尺寸。
返回值:
Rect
对象数组,其中每个Rect
对象表示一个屏幕的边界信息。
使用示例
以下示例展示了如何使用 Screen.all
方法获取所有屏幕的边界信息:
const { Screen } = require('leanpro.common');
const screens = Screen.all();
screens.forEach((screen, i) => {
console.log(`Screen ${i}:`, screen);
});
from leanproAuto import Screen
screens = Screen.all()
for i, screen in enumerate(screens):
print(f"Screen {i}: {screen}")
在这个例子中,我们首先使用 Screen.all
方法来获取所有屏幕的信息,然后遍历结果并打印出每个屏幕的边界信息。
screenSize()
不建议使用,可以用screenRect代替。
用于获取当前屏幕的尺寸,即屏幕的宽度和高度。它不需要任何参数。
返回值:
{width: number, height: number}
,这两个属性分别表示屏幕的宽度和高度,以像素为单位。
colorAt(x, y)
获取屏幕上特定点的颜色。返回值为一串十六进制格式的 RGB 颜色代码字符串,形如 FFFFFF
。
参数:
- x:
number
类型,定义所需获取颜色点的水平坐标,起点在屏幕的最左边。 - y:
number
类型,定义所需获取颜色点的垂直坐标,起点在屏幕的最顶部。
返回值:
string
类型,一串十六进制格式的 RGB 颜色代码字符串。
使用示例
以下示例展示了如何使用 Screen.colorAt
方法来获取屏幕上某个特定点的颜色:
const { Screen } = require('leanpro.common');
const x = 500;
const y = 300;
const color = Screen.colorAt(x, y);
console.log(`Color at (${x}, ${y}): ${color}`);
from leanproAuto import Screen
x = 500
y = 300
color = Screen.colorAt(x, y)
print(f"Color at ({x}, {y}): {color}")
在这个例子中,我们首先定义了所需点的 x 和 y 坐标,然后使用 Screen.colorAt
方法来获取这个点的颜色。最后,我们打印出这个颜色值。
capture(rect)
捕获屏幕上的特定矩形区域的截图。如果没有指定矩形区域,那么此方法将捕获整个屏幕的截图。
参数:
- rect: (可选)
Rect
类型,用来定义要截图的矩形区域的位置和尺寸。如果此参数未提供,那么方法将捕获整个屏幕的截图。
返回值:
Buffer
类型,其中包含了捕获的截图数据,这个Buffer
对象可以被用来将截图数据保存为文件,或者用于其他需要使用图像数据的场景。例如用于报告附件,或者使用Image.from()
方法构造Image
对象。
使用示例
1. 捕获整个屏幕并将其添加至报告
const { Screen } = require('leanpro.common');
const image_buffer = Screen.capture();
this.attach(image_buffer, 'image/png');
from leanproAuto import Screen
import base64
image_buffer = Screen.capture()
#这里需要用base64库将buffer形式转化为字符串形式
image_string = base64.b64encode(image_buffer).decode('utf-8')
request.attach(image_string, "image/png")
在以上示例中,Screen.capture()
在未提供 rect
参数的情况下默认捕获整个屏幕。捕获的图像数据以 Buffer
对象的形式返回,并通过 attach()
方法附加到报告中。
2. 捕获特定区域并保存为 PNG 文件
const { Screen } = require('leanpro.common');
const fs = require('fs');
const rect = { "x": 555, "y": 358, "width": 126, "height": 34 };
const buffer = Screen.capture(rect);
fs.writeFileSync('screenshot.png', buffer);
from leanproAuto import Screen
rect = { "x": 555, "y": 358, "width": 126, "height": 34 }
buffer = Screen.capture(rect)
with open('screenshot.png', 'wb') as f:
f.write(buffer)
在这个示例中,我们定义了矩形区域的坐标(x
, y
)和尺寸(width
, height
),然后调用 Screen.capture(rect)
捕获该区域的截图,并将结果保存为 PNG 文件。
captureToFile(filePath, rect)
捕获屏幕截图并将其保存到指定文件路径。用户可以选择截取整个屏幕或者截取屏幕上的特定区域。
参数:
- filePath:
string
类型,这是一个字符串,表示截图保存的文件路径。文件路径应包含文件名和扩展名。支持的文件格式包括.jpg
,.png
,.bmp
等。 - rect: (可选)
Rect
类型,如果这个参数没有提供,那么会捕获整个屏幕的截图。
返回值:
- 此方法没有返回值。
使用示例
以下示例展示了如何使用 Screen.captureToFile
方法来截取整个屏幕的截图并保存到指定的文件路径:
const { Screen } = require('leanpro.common');
Screen.captureToFile("C:/Users/Username/Desktop/screenshot.png");
from leanproAuto import Screen
Screen.captureToFile("C:/Users/Username/Desktop/screenshot.png")
以下示例展示了如何使用 Screen.captureToFile
方法来截取屏幕上特定区域的截图并保存到指定的文件路径:
const { Screen } = require('leanpro.common');
Screen.captureToFile("C:/Users/Username/Desktop/screenshot.png", { "x": 555, "y": 358, "width": 126, "height": 34 });
from leanproAuto import Screen
Screen.captureToFile("C:/Users/Username/Desktop/screenshot.png", { "x": 555, "y": 358, "width": 126, "height": 34 })
在这个例子中,矩形区域的左上角坐标是 (555,358)
,矩形的宽度是 126
像素,高度是 34
像素。
highlight(rect, duration)
高亮显示屏幕上指定矩形区域的函数。这个功能在标识和追踪特定屏幕区域时特别有用,如在测试过程中,它可以直观地显示出正在测试或分析的区域。
参数:
- rect:
Rect
类型,用来定义要高亮的矩形区域的位置和尺寸。 - duration: (可选)
number
类型。这是一个代表高亮显示持续时间的数字,单位是毫秒。如果这个参数没有提供,那么高亮显示将持续到下一个highlight
调用,或者到测试结束。
返回值:
- 此方法没有返回值。
使用示例
以下示例展示了如何使用 Screen.highlight
方法来高亮显示一个特定的屏幕区域:
const { Screen } = require('leanpro.common');
Screen.highlight({ "x": 555, "y": 358, "width": 126, "height": 34 });
from leanproAuto import Screen
Screen.highlight({ "x": 555, "y": 358, "width": 126, "height": 34 })
在这个例子中,矩形区域的左上角坐标是 (555, 358)
,矩形的宽度是 126
像素,高度是 34
像素。
takeScreenshot(filePath, monitor)
获取屏幕截屏并保存到指定文件路径。由原先的Util.takeScreenshot
方法合并而来,获取屏幕截屏。
参数:
- filePath:
string
类型,表示截图保存的文件路径。文件路径应包含文件名和扩展名。支持的文件格式包括.jpg
,.png
,.bmp
等。 - monitor: (可选)
number
类型,要获取截图的监视器的编号。不传参数或传-1
,会获取所有屏幕合并后的截图。传0
返回第一个显示屏,1
返回第二个,以此类推。
返回值:
string
或void
,保存截图的文件路径或无返回值。
使用示例
以下示例展示了如何使用 Screen.takeScreenshot
方法来获取屏幕截屏并保存到指定文件路径:
const { Screen } = require('leanpro.common');
Screen.takeScreenshot("C:/Users/Username/Desktop/screenshot.png");