Thử nghiệm giao diện người dùng Python

Trong bài viết này, chúng ta sẽ khám phá cách chúng ta có thể thực hiện tự động hóa GUI bằng Python. Có nhiều mô-đun có thể làm những việc này, nhưng trong bài viết này, chúng tôi sẽ sử dụng một mô-đun có tên PyAutoGUI để thực hiện GUI và tự động hóa máy tính để bàn bằng python.  

Chúng tôi sẽ khám phá hai phần -

  • Cách tự động sử dụng con trỏ chuột để thực hiện một số tác vụ như di chuyển con trỏ, nhấp vào một điểm nào đó trên màn hình, v.v.
  • Ngoài ra, chúng tôi sẽ khám phá cách chúng tôi có thể tự động hóa các lần nhấn bàn phím

Cài đặt

Mô-đun này không được cài đặt sẵn Python. Để cài đặt, gõ lệnh dưới đây trong thiết bị đầu cuối

pip install pyautogui # for windows
or 
pip3 install pyautogui #for linux and Macos

Bắt đầu

Chúng tôi nên biết kích thước màn hình của thiết bị trước khi thực hiện bất kỳ hoạt động tự động hóa nào. May mắn thay, PyautoGUI giúp chúng tôi dễ dàng lấy nó bằng cách sử dụng. kích thước[] chức năng. Nó trả về một đối tượng kích thước với hai giá trị tương ứng là chiều rộng và chiều cao của màn hình. Thực hiện như sau

cú pháp. pyautogui. kích thước[]

Thông số. Hàm này không nhận thêm bất kỳ tham số nào

Loại trả lại. Nó trả về cho chúng ta kích thước của màn hình hiện tại tính bằng pixel trong đối tượng Kích thước

Dưới đây là việc thực hiện

Python3




# importing modules

import pyautogui

 

# returns a size object with

# width and height of the screen

print[pyautogui.size[]]

đầu ra

Size[width=1920, height=1080]

Tự động hóa chuyển động của chuột

Lấy vị trí hiện tại của con trỏ chuột

Đầu tiên, chúng tôi sẽ xem con trỏ chuột của tôi hiện đang ở đâu, vì điều đó chúng tôi có thể sử dụng. chức năng vị trí []. Hàm lại trả về một đối tượng điểm có giá trị x và y nhận vị trí hiện tại của chuột

cú pháp. pyautogui. Chức vụ[]

Thông số. Hàm này không nhận thêm bất kỳ tham số nào

Loại trả lại. Nó trả về cho chúng ta vị trí của con trỏ chuột trong một đối tượng Point

Dưới đây là việc thực hiện

Python3




import pyautogui

 

Size[width=1920, height=1080]
2

Size[width=1920, height=1080]
3

print

Size[width=1920, height=1080]
5

đầu ra

Point[x=1710, y=81]

Di chuyển con trỏ và nhấp vào các điểm cụ thể

Bây giờ chúng tôi sẽ thử di chuyển con trỏ chuột và nhấp vào các điểm cụ thể và thực hiện mở và đóng ứng dụng. Để di chuyển con trỏ chuột, chúng ta có thể sử dụng. moveto[] và chỉ định các giá trị x, y cùng với khoảng thời gian mà nó sẽ thực hiện thao tác và chúng tôi sẽ sử dụng. click[] để nhấp vào vị trí hiện tại con trỏ chuột của chúng ta đang nằm. Về cơ bản, mã di chuyển con trỏ chuột đến các giá trị [519,1060] [x, y] và sau đó mô phỏng một lần nhấp bằng cách sử dụng. click[]  tại vị trí hiện tại của con trỏ, sau đó chúng tôi lại di chuyển đến vị trí [1717,352] bằng cách sử dụng moveTo[] và mô phỏng lại lần nhấp.  

cú pháp. pyautogui. moveTo[] và pyautogui. nhấp chuột[]

Thông số. Hàm moveTo này có hai tham số bắt buộc và một tham số tùy chọn, hai giá trị đầu tiên của x và y là các giá trị bắt buộc trong khi thời lượng là một tham số bổ sung giúp tạo hoạt ảnh cho chuyển động của chuột trong số giây được gán cho tham số thời lượng. Phương thức nhấp chuột trong ví dụ không nhận bất kỳ tham số nào nhưng có thể sử dụng một cặp tham số tùy chọn để nhấp vào một vị trí cụ thể trên bàn phím

Loại trả lại. Các chức năng không trả lại bất cứ thứ gì nhưng thực hiện các công việc của con trỏ đến một điểm cụ thể và sau đó nhấp vào đó theo chương trình.  

Dưới đây là việc thực hiện

Python3




import pyautogui

 

 

Size[width=1920, height=1080]
8

Size[width=1920, height=1080]
9
Point[x=1710, y=81]
0
Point[x=1710, y=81]
1_______5_______2
Point[x=1710, y=81]
3
Point[x=1710, y=81]
4
Point[x=1710, y=81]
5
Point[x=1710, y=81]
6

 

Point[x=1710, y=81]
7

Point[x=1710, y=81]
8

Point[x=1710, y=81]
9

 

# importing modules0

Size[width=1920, height=1080]
9# importing modules2
Point[x=1710, y=81]
1# importing modules4
Point[x=1710, y=81]
3
Point[x=1710, y=81]
4
Point[x=1710, y=81]
5
Point[x=1710, y=81]
6

 

Point[x=1710, y=81]
7

Point[x=1710, y=81]
8

Point[x=1710, y=81]
9

đầu ra

Bây giờ chúng ta sẽ khám phá thêm hai phương pháp cụ thể là. moveRel[] giúp chúng ta di chuyển so với vị trí hiện tại và cuối cùng chúng ta sẽ thấy cách chúng ta có thể mô phỏng nhấp chuột phải bằng pyAutoGUI. Chúng tôi bắt đầu với việc nhập gói và kích thích con trỏ di chuyển 498 px trở xuống 998 px từ vị trí hiện tại. Sau đó, chúng tôi sử dụng phương thức click[] để mô phỏng nhấp chuột trái. Sau đó, chúng tôi di chuyển đến một vị trí cụ thể bằng cách sử dụng. phương thức moveTo[]. Bây giờ, chúng tôi lại nhấp vào vị trí hiện tại của con trỏ nhưng lần này chúng tôi hướng dẫn mô phỏng nhấp chuột phải thay vì nhấp chuột trái bằng cách chuyển tham số button=”right” [mặc định là button=”left”]. Sau đó, chúng tôi đạt được để di chuyển đến một vị trí được chỉ định và nhấp chuột trái vào đó

cú pháp. pyautogui. di chuyểnRel[]

Thông số. Hàm moveRel này cũng có hai tham số bắt buộc và một tham số tùy chọn, hai giá trị đầu tiên của x và y là các giá trị bắt buộc trong khi thời lượng là một tham số bổ sung giúp tạo hoạt ảnh cho chuyển động của chuột trong số giây được gán cho tham số thời lượng. Ngoài ra, chúng tôi đã sử dụng một tham số bổ sung cho pyautogui. click[], chúng tôi đã sử dụng button=”right” mô phỏng nhấp chuột phải thay vì nhấp chuột trái mặc định

Loại trả lại. Các hàm không trả về bất cứ thứ gì nhưng thực hiện công việc di chuyển con trỏ sang trái 498 px & xuống 998 px từ vị trí hiện tại của nó, sau đó mô phỏng nhấp chuột phải theo chương trình.  

Dưới đây là việc thực hiện

Python3




import pyautogui

 

import4

import5

import6_______155_______7import8_______5_______1pyautogui0

Point[x=1710, y=81]
3
Point[x=1710, y=81]
4
Point[x=1710, y=81]
5
Point[x=1710, y=81]
6

 

pyautogui5

Point[x=1710, y=81]
9

 

pyautogui7

Size[width=1920, height=1080]
9pyautogui9
Point[x=1710, y=81]
1# returns a size object with1
Point[x=1710, y=81]
3
Point[x=1710, y=81]
4
Point[x=1710, y=81]
5
Point[x=1710, y=81]
6

 

# returns a size object with6

# returns a size object with7

# returns a size object with8

Point[x=1710, y=81]
4# width and height of the screen0
Point[x=1710, y=81]
6

 

pyautogui7

Size[width=1920, height=1080]
9# width and height of the screen4
Point[x=1710, y=81]
1# width and height of the screen6
Point[x=1710, y=81]
3
Point[x=1710, y=81]
4
Point[x=1710, y=81]
5
Point[x=1710, y=81]
6

 

pyautogui5

Point[x=1710, y=81]
9

đầu ra

Kéo con trỏ đến một vị trí màn hình cụ thể

Bây giờ chúng ta sẽ xem cách kéo các cửa sổ bằng pyAutoGUI. Chúng ta có thể sử dụng. dragto[] và. dragrel[] chính xác là cách. moveto[] và. movrel[] hoạt động ngoại trừ trong trường hợp này, họ giữ nhấp chuột trái trong khi di chuyển con trỏ. Trong chương trình này, chúng tôi chỉ cần nhập các mô-đun, sau đó chúng tôi chuyển đến một chỉ định bằng cách sử dụng. hàm moveTo[]. Sau đó, chúng tôi nhấp chuột trái vào vị trí hiện tại của con trỏ. Bây giờ chúng ta lại di chuyển con trỏ đến một vị trí xác định. Sau đó, chúng tôi sử dụng. dragTo[] để kéo [nhấp chuột trái và giữ] đến một vị trí cụ thể. Cuối cùng, chúng ta sử dụng hàm dragRel[] để kéo con trỏ so với vị trí hiện tại của nó sang phải 50px và xuống dưới 50px

cú pháp. pyautogui. dragTo[] và pyautogui. dragRel[]

Thông số. Cả hai chức năng đều có hai tham số bắt buộc và một tham số tùy chọn, hai giá trị đầu tiên của x và y là các giá trị bắt buộc trong khi thời lượng là một tham số bổ sung giúp tạo hoạt ảnh cho chuyển động của chuột trong số giây được gán cho tham số thời lượng

Loại trả lại. Các chức năng không trả về bất cứ thứ gì ngoài việc thực hiện các công việc nhấp chuột trái và giữ và di chuyển con trỏ đến vị trí [500,500] và kéo con trỏ so với vị trí của nó sang phải 5opx và xuống 50 px theo chương trình.  

Dưới đây là việc thực hiện

Python3




import pyautogui

 

print5

Size[width=1920, height=1080]
9
Point[x=1710, y=81]
0
Point[x=1710, y=81]
1_______5_______2
Point[x=1710, y=81]
3
Point[x=1710, y=81]
4
Point[x=1710, y=81]
5
Point[x=1710, y=81]
6

 

[pyautogui.size[]]4

Point[x=1710, y=81]
9

 

print5

Size[width=1920, height=1080]
9[pyautogui.size[]]8
Point[x=1710, y=81]
1# importing modules4
Point[x=1710, y=81]
3
Point[x=1710, y=81]
4
Point[x=1710, y=81]
5
Point[x=1710, y=81]
6

 

Size[width=1920, height=1080]
05

Size[width=1920, height=1080]
06

Size[width=1920, height=1080]
07
Size[width=1920, height=1080]
08
Point[x=1710, y=81]
1
Size[width=1920, height=1080]
08
Point[x=1710, y=81]
3
Point[x=1710, y=81]
4
Point[x=1710, y=81]
5
Point[x=1710, y=81]
6

 

Size[width=1920, height=1080]
15

Size[width=1920, height=1080]
16

Size[width=1920, height=1080]
17_______1_______18
Point[x=1710, y=81]
1
Size[width=1920, height=1080]
18
Point[x=1710, y=81]
3
Point[x=1710, y=81]
4
Point[x=1710, y=81]
5_______5_______6

đầu ra

Ghi chú. Thông số thời lượng trong. chuyển tới[],. di chuyểnRel[],. dragTo[] và. Các hàm dragRel[] là tùy chọn, nhưng nó được cung cấp để tạo hiệu ứng hoạt hình, nếu không có thuộc tính, các hàm sẽ thực thi ngay lập tức và sẽ rất khó hiểu. Ngoài ra, chúng tôi tùy chọn chuyển các giá trị x và y trong. click[] có thể được sử dụng để nhấp vào một vị trí khác với vị trí hiện tại của con trỏ

Bàn phím tự động

Tự động gõ bằng bàn phím

Đầu tiên, chúng ta sẽ tìm hiểu cách mô phỏng việc nhập nội dung nào đó bằng pyAutoGUI. Ở đây trong ví dụ này, chúng tôi sẽ nhập nội dung nào đó vào tệp notepad bằng cách sử dụng. chức năng đánh máy []. Trong mã này, trước tiên chúng tôi nhập mô-đun thời gian và pyAutoGUI, sau đó sử dụng thời gian. sleep[] để tạm dừng thực thi chương trình trong một số giây được chỉ định. Sau đó, chúng tôi sử dụng pyautogui. typewrite[] chức năng mô phỏng việc gõ các phím chữ và số. Cụm từ bên trong dấu ngoặc kép sẽ được gõ. Thực hiện như sau

cú pháp. pyautogui. đánh máy[]

Thông số. Hàm chỉ có một tham số là chuỗi cần gõ

Loại trả lại. Các hàm không trả về bất cứ thứ gì nhưng thực hiện các công việc mô phỏng việc gõ một chuỗi được truyền bên trong nó.  

Dưới đây là việc thực hiện

Python3




Size[width=1920, height=1080]
25

import

Size[width=1920, height=1080]
27

import pyautogui

 

Size[width=1920, height=1080]
30

Size[width=1920, height=1080]
31

Size[width=1920, height=1080]
32_______1_______33
Point[x=1710, y=81]
6

 

Size[width=1920, height=1080]
35

Size[width=1920, height=1080]
36

Size[width=1920, height=1080]
37_______1_______38
Point[x=1710, y=81]
6

đầu ra

Nhấn các phím cụ thể và mô phỏng phím nóng

Tiếp theo, chúng ta sẽ khám phá hai chức năng, chức năng đầu tiên là. press[] và cái thứ hai là. phím nóng [], phím đầu tiên giúp bạn nhấn một phím thường được sử dụng để nhấn các phím không phải chữ và số và. các hàm hotkeys[] giúp chúng ta nhấn các phím nóng như ctrl+shift+esc, v.v. Ở đây, chúng tôi cũng bắt đầu mã bằng cách nhập hai mô-đun, thời gian và pyAutoGUI. Sau đó, chúng tôi tạm dừng thực hiện chương trình trong 5 giây bằng chức năng ngủ. chúng tôi nhập chuỗi bằng chức năng đánh máy. Sau đó, chúng tôi sử dụng. press[] để mô phỏng thao tác nhấn phím và cuối cùng là. hotkey[] chức năng để mô phỏng việc nhấn các phím nóng. Trong ví dụ của chúng tôi, chúng tôi đã sử dụng phím nóng ctrl+a để chọn tất cả văn bản. Việc thực hiện như sau

cú pháp. pyautogui. nhấn[] và pyautogui. phím nóng[]

Thông số. Các. press[] chỉ có một tham số là phím cần nhấn và. hàm hotkey[] có một số tham số tùy thuộc vào số lượng phím để mô phỏng hành động của phím nóng

Loại trả lại. Các chức năng không trả về bất cứ điều gì nhưng thực hiện công việc mô phỏng nhấn phím enter và mô phỏng nhấn phím nóng ctrl+a.  

Dưới đây là việc thực hiện

Python3




Size[width=1920, height=1080]
25

import

Size[width=1920, height=1080]
27

import pyautogui

 

Size[width=1920, height=1080]
30

Size[width=1920, height=1080]
31

Size[width=1920, height=1080]
32_______1_______33
Point[x=1710, y=81]
6

 

Size[width=1920, height=1080]
35

Size[width=1920, height=1080]
36

Size[width=1920, height=1080]
37_______1_______38
Point[x=1710, y=81]
6

 

Size[width=1920, height=1080]
55

Size[width=1920, height=1080]
56
Size[width=1920, height=1080]
57
Point[x=1710, y=81]
6

 

Size[width=1920, height=1080]
59

Size[width=1920, height=1080]
60
Size[width=1920, height=1080]
61
Point[x=1710, y=81]
1
Size[width=1920, height=1080]
63
Point[x=1710, y=81]
6

đầu ra

Hiển thị hộp tin nhắn

Bây giờ chúng tôi sẽ cố gắng khám phá một số hộp thông báo kiểu JavaScript đa nền tảng do pyAutoGUI cung cấp cho chúng tôi. Nó sử dụng mô-đun Tkinter và PyMsgBox để hiển thị các hộp này. Mã bắt đầu bằng việc nhập các mô-đun, sau đó chúng tôi sử dụng các hộp thông báo khác nhau để hiển thị các thông báo khác nhau. Các. Hàm alert[] hiển thị một cảnh báo trong đó chúng ta đặt tiêu đề và văn bản thành trống bằng nút “OK”. Sau đó. Hàm confirm[] hiển thị hộp thoại xác nhận, trong đó chúng ta đặt lại tiêu đề và văn bản để trống và giữ hai nút “OK” & “CANCEL”. Sau đó. Hàm prompt[] hiển thị hộp nhắc xác nhận trong đó chúng ta lại đặt tiêu đề, văn bản và mặc định [những gì sẽ được viết theo mặc định trong hộp nhắc trước khi người dùng bắt đầu nhập] thành trống. cuối cùng. password[] hiển thị hộp thoại mật khẩu trong đó chúng ta lại đặt tiêu đề và văn bản thành trống và đặt mặt nạ [Ký tự được thay thế thay vì các chữ cái gốc trong mật khẩu] thành “*”. Việc thực hiện như sau

cú pháp. pyautogui. cảnh báo [], pyautogui. xác nhận[], pyautogui. dấu nhắc [] và pyautogui. mật khẩu mở khóa[]

Thông số. Các. Hàm alert[] có ba tham số xác định tiêu đề, văn bản và các nút được đặt. Các. hàm confirm[] cũng có ba tham số cho văn bản, tiêu đề và nút. Các. Hàm prompt[] có ba tham số cho văn bản, tiêu đề và giá trị mặc định. Các. password[] có bốn tham số cho văn bản, tiêu đề, giá trị mặc định và mặt nạ [Ký tự được thay thế cho các chữ cái gốc trong mật khẩu].  

Loại trả lại. Các chức năng không trả về bất cứ điều gì nhưng hiển thị một cảnh báo trong đó chúng tôi đặt tiêu đề và văn bản thành trống bằng nút “OK”. Sau đó, nó sẽ hiển thị một hộp thoại xác nhận trong đó chúng tôi lại đặt tiêu đề và văn bản thành trống và giữ hai nút “OK” & nút “CANCEL”. Sau đó. Hàm prompt[] hiển thị hộp nhắc xác nhận trong đó chúng ta lại đặt tiêu đề, văn bản và mặc định [những gì sẽ được viết theo mặc định trong hộp nhắc trước khi người dùng bắt đầu nhập] thành trống. cuối cùng. password[] hiển thị hộp thoại mật khẩu trong đó chúng ta lại đặt tiêu đề và văn bản thành trống và đặt mặt nạ thành “*”.  

Dưới đây là việc thực hiện

Python3




import pyautogui

 

Size[width=1920, height=1080]
67

Size[width=1920, height=1080]
68

Size[width=1920, height=1080]
69

Size[width=1920, height=1080]
70
Point[x=1710, y=81]
4
Size[width=1920, height=1080]
72
Size[width=1920, height=1080]
73
Size[width=1920, height=1080]
74
Size[width=1920, height=1080]
75

 

Size[width=1920, height=1080]
76

Size[width=1920, height=1080]
77

Size[width=1920, height=1080]
78
Point[x=1710, y=81]
4
Size[width=1920, height=1080]
72
Size[width=1920, height=1080]
73
Size[width=1920, height=1080]
82
Size[width=1920, height=1080]
83
Size[width=1920, height=1080]
84
Size[width=1920, height=1080]
85

 

Size[width=1920, height=1080]
86

Size[width=1920, height=1080]
87

Size[width=1920, height=1080]
88
Point[x=1710, y=81]
4
Size[width=1920, height=1080]
72
Size[width=1920, height=1080]
73
Size[width=1920, height=1080]
92
Size[width=1920, height=1080]
93

 

Size[width=1920, height=1080]
94

Size[width=1920, height=1080]
95

Size[width=1920, height=1080]
96
Point[x=1710, y=81]
4
Size[width=1920, height=1080]
72
Size[width=1920, height=1080]
73
Point[x=1710, y=81]
00
Point[x=1710, y=81]
01
Point[x=1710, y=81]
02
Size[width=1920, height=1080]
93

đầu ra

Chụp ảnh màn hình

Cuối cùng, chúng ta sẽ xem cách chụp ảnh màn hình bằng pyAutoGUI bằng cách sử dụng. chức năng ảnh chụp màn hình []. Chúng tôi sẽ bắt đầu bằng cách nhập mô-đun pyAutoGUI. Sau đó, chúng tôi sử dụng. screenshot[] chức năng chụp ảnh màn hình của cửa sổ hiện tại và lưu trữ dưới dạng “123. png” trong cùng một thư mục, để lưu trữ trong một thư mục khác, chúng tôi cần cung cấp đường dẫn tương đối hoặc tuyệt đối của nó. Việc thực hiện sẽ như sau

cú pháp. pyautogui. ảnh chụp màn hình[]

Thông số. Hàm có một tham số tùy chọn là đường dẫn của tệp cùng với tên tệp mà ảnh chụp màn hình cần được lưu trữ trong đó

Loại trả lại. Hàm không trả về bất cứ thứ gì nhưng chụp ảnh màn hình và lưu trữ nó trong đường dẫn được truyền bên trong nó dưới dạng tham số

Python có thể được sử dụng để tự động hóa giao diện người dùng không?

Xác thực điều hướng người dùng, kiểm tra chức năng và xác thực các trường nhập liệu; . Ngoài ra, thử nghiệm đa nền tảng có thể được thực hiện với các tập lệnh thử nghiệm này. All of these tasks can easily be carried out by applying UI automation with Python and Selenium. Additionally, cross-platform testing can be performed with these test scripts.

Chúng tôi có thể sử dụng pytest để kiểm tra giao diện người dùng không?

Pytest cho phép bạn kiểm tra mọi thứ, kể cả Cơ sở dữ liệu, giao diện người dùng và phổ biến hơn đối với những người kiểm tra để Kiểm tra API. Nó có thể được chạy như một công cụ riêng lẻ để thử nghiệm hoặc nó có thể được gắn vào các khung phát triển web Python như Django hoặc Flask, nâng cao khả năng kiểm tra đơn vị và độ tin cậy của chúng.

Thử nghiệm API và thử nghiệm giao diện người dùng có giống nhau không?

Mặc dù thử nghiệm giao diện người dùng có thể tập trung vào việc xác thực giao diện của giao diện web hoặc nút thanh toán cụ thể có hoạt động hay không — Thử nghiệm API chú trọng nhiều hơn vào thử nghiệm logic kinh doanh, . .

Công cụ nào được sử dụng để kiểm tra giao diện người dùng?

Selenium là công cụ tự động kiểm tra giao diện người dùng mã nguồn mở nổi tiếng được sử dụng rộng rãi trong ngành kiểm thử. Nó có thể tự động hóa các tập lệnh kiểm tra trên nhiều hệ điều hành khác nhau, bao gồm Linux, Mac, Windows và các trình duyệt, bao gồm Chrome, Firefox, Internet Explorer và Headless Browsers.

Chủ Đề