屏幕自动化 (Screen)

屏幕自动化对象 Screen 用于获取屏幕属性以及操作屏幕。

Screen 对象提供以下方法:

方法名 描述
screenRect 获取指定监视器或所有屏幕的边界信息。
all 获取所有屏幕的边界信息。
colorAt 获取屏幕上特定点的颜色。
capture 捕获屏幕上的特定矩形区域的截图。
captureToFile 捕获屏幕截图并保存到指定文件路径。
highlight 高亮显示屏幕上指定矩形区域。
takeScreenshot 获取屏幕截屏并保存到指定文件路径。

类型文件定义

类型文件定义如下:

JavaScript
Python
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);

    // deprecated 弃用
    static screenSize(): {width: number, height: number};
}
class Screen():
    def all() -> "List[Rect]"
    def screenRect(monitor: Optional[int]=None) -> "Rect"
    def screenSize() -> TypedDict
    def colorAt(x: int, y: int) -> str
    def capture(rect: Optional[Rect]=None) -> "bytearray"
    def captureToFile(filePath: str, rect: Optional[Rect]=None) -> None
    def takeScreenshot(filePath: str, monitor: Optional[int]=None) -> Union[str, None]
    def highlight(rect: Rect, duration: Optional[int]=None) -> "any"

class ScreenSize():
    width: int
    height: int

Rect类

Rect 类用于描述控件的形状和位置信息。在 CukeTest 中,所有控件都可以用一个矩形(Bounding Rectangle)来描述其位置和形状。Rect 对象包含以下属性:

  • x: number 类型,表示相对坐标的水平像素;
  • y: number 类型,表示相对坐标的垂直像素;
  • width: number 类型,表示矩形的宽度,单位为像素;
  • height: number 类型,表示矩形的高度,单位为像素;

JavaScript
Python
interface Rect {
    x: number;
    y: number;
    width: number;
    height: number;
}
class Rect:
    x: int
    y: int
    width: int
    height: int

API 介绍

screenRect(monitor?: number): Rect

获取指定监视器或所有屏幕的边界信息。

  • monitor: (可选)要获取边界信息的监视器的编号。不传参数或传 -1,会获取所有屏幕合并后的尺寸,数值上等于 Screen.capture 方法获取到截图的尺寸。传 0 返回第一个显示屏,1 返回第二个,以此类推。
  • 返回值: Rect 对象,表示指定监视器的边界信息。

使用示例

以下示例展示了如何使用 Screen.screenRect 方法获取指定监视器的边界信息:

JavaScript
Python
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 对象数组,其中每个 Rect 对象表示一个屏幕的边界信息。

使用示例

以下示例展示了如何使用 Screen.all 方法获取所有屏幕的边界信息:

JavaScript
Python
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(): {width: number, height: number}

不建议使用,可以用screenRect代替。

用于获取当前屏幕的尺寸,即屏幕的宽度和高度。它不需要任何参数。

  • 返回值: {width: number, height: number},这两个属性分别表示屏幕的宽度和高度,以像素为单位。

colorAt(x: number, y: number): string

获取屏幕上特定点的颜色。返回值为一串十六进制格式的 RGB 颜色代码字符串,形如 FFFFFF

  • x: number 类型,定义所需获取颜色点的水平坐标,起点在屏幕的最左边。
  • y: number 类型,定义所需获取颜色点的垂直坐标,起点在屏幕的最顶部。
  • 返回值: string 类型,一串十六进制格式的 RGB 颜色代码字符串。

使用示例

以下示例展示了如何使用 Screen.colorAt 方法来获取屏幕上某个特定点的颜色:

JavaScript
Python
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): Buffer

捕获屏幕上的特定矩形区域的截图。如果没有指定矩形区域,那么此方法将捕获整个屏幕的截图。

  • rect: (可选)Rect 类型,用来定义要截图的矩形区域的位置和尺寸。如果此参数未提供,那么方法将捕获整个屏幕的截图。
  • 返回值: Buffer 类型,其中包含了捕获的截图数据,这个 Buffer 对象可以被用来将截图数据保存为文件,或者用于其他需要使用图像数据的场景。例如用于报告附件,或者使用Image.from()方法构造Image对象。

使用示例

以下示例展示了如何使用 Screen.capture 方法来捕获一个特定的屏幕区域的截图,并将其保存为文件:

JavaScript
Python
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)

在这个例子中,我们首先定义了矩形区域的坐标和尺寸,然后使用 Screen.capture 方法来捕获截图,最后使用 fs.writeFileSync 方法将截图数据保存为一个 PNG 文件。

captureToFile(filePath: string, rect?: Rect): void

捕获屏幕截图并将其保存到指定文件路径。用户可以选择截取整个屏幕或者截取屏幕上的特定区域。

  • filePath: string 类型,这是一个字符串,表示截图保存的文件路径。文件路径应包含文件名和扩展名。支持的文件格式包括 .jpg, .png, .bmp 等。
  • rect: (可选)Rect 类型,如果这个参数没有提供,那么会捕获整个屏幕的截图。
  • 返回值: 此方法没有返回值。

使用示例

以下示例展示了如何使用 Screen.captureToFile 方法来截取整个屏幕的截图并保存到指定的文件路径:

JavaScript
Python
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 方法来截取屏幕上特定区域的截图并保存到指定的文件路径:

JavaScript
Python
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: Rect, duration?: number)

高亮显示屏幕上指定矩形区域的函数。这个功能在标识和追踪特定屏幕区域时特别有用,如在测试过程中,它可以直观地显示出正在测试或分析的区域。

  • rect: Rect 类型,用来定义要高亮的矩形区域的位置和尺寸。
  • duration: (可选)number 类型。这是一个代表高亮显示持续时间的数字,单位是毫秒。如果这个参数没有提供,那么高亮显示将持续到下一个 highlight 调用,或者到测试结束。
  • 返回值: 此方法没有返回值。

使用示例

以下示例展示了如何使用 Screen.highlight 方法来高亮显示一个特定的屏幕区域:

JavaScript
Python
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: string, monitor?: number): string | void

获取屏幕截屏并保存到指定文件路径。由原先的Util.takeScreenshot方法合并而来,获取屏幕截屏。

  • filePath: string 类型,表示截图保存的文件路径。文件路径应包含文件名和扩展名。支持的文件格式包括 .jpg, .png, .bmp 等。
  • monitor: (可选)number 类型,要获取截图的监视器的编号。不传参数或传 -1,会获取所有屏幕合并后的截图。传 0 返回第一个显示屏,1 返回第二个,以此类推。
  • 返回值: stringvoid,保存截图的文件路径或无返回值。

使用示例

以下示例展示了如何使用 Screen.takeScreenshot 方法来获取屏幕截屏并保存到指定文件路径:

JavaScript
Python
const { Screen } = require('leanpro.common');
Screen.takeScreenshot("C:/Users/Username/Desktop/screenshot.png");
from leanproAuto import Screen
Screen.takeScreenshot("C:/Users/Username/Desktop/screenshot.png")

results matching ""

    No results matching ""