Trong các bài viết trước về Hướng dẫn Selenium Python, chúng ta đã đề cập đến “Cách xử lý hộp kiểm, danh sách thả xuống tĩnh và các thành phần giao diện người dùng khác trong Selenium Python“. Trong hướng dẫn này, chúng ta sẽ tìm hiểu JavaScript Executor trong Selenium Python
Mô hình đối tượng tài liệu hoặc DOM có thể truy cập tất cả các phần tử trên trang web với sự trợ giúp của Javascript. Nếu chúng tôi kiểm tra bất kỳ phần tử nào trên trang web và điều hướng đến bảng điều khiển trong Công cụ dành cho nhà phát triển, thì tất cả các phương pháp có sẵn để truy cập các phần tử web sẽ khả dụng
Do đó, nó có các khả năng mà Selenium có thể thực hiện. Selenium có tính năng thực thi mã Javascript [để truy cập DOM] tích hợp với nó. Điều này là cần thiết bất cứ khi nào Selenium không thể xác định một phần tử hoặc thực hiện một số hành động trên nó
Selenium chứa phương thức exec_script[] để thực thi các lệnh Javascript được truyền dưới dạng đối số cho phương thức đó. Ngoài ra, trong khi làm việc với các phương thức DOM [getElementsByName và getElementsById, v.v.] tìm nạp một mảng các phần tử phù hợp. Vì vậy, chúng ta cần đề cập đến chỉ mục để định vị một phần tử cụ thể. Ví dụ. getElementsByName[‘text-box’] [0], đề cập đến phần tử phù hợp đầu tiên trên trang web
Bây giờ chúng ta hãy xem cách trích xuất các giá trị từ hộp chỉnh sửa với sự trợ giúp của trình thực thi Javascript
1
2
3
4
5
6
7
8
9
# nhập webdriver
từ selenium nhập webdriver
trình điều khiển = trình điều khiển web. Chrome [executable_path = " . \\ chromedriver. exe"]
# lấy phương thức để khởi chạy URL
trình điều khiển. nhận["https. //www. tài liệu kiểm thử phần mềm. com/sample-webpage-to-automate/"]
# để nhập văn bản vào hộp chỉnh sửa
trình điều khiển. find_element_by_name ["tên người dùng"].send_keys["Python"]
# trích xuất giá trị bằng Javascript Executor
in[trình điều khiển. execute_script['return tài liệu. getElementsByName["tên người dùng"][0]. giá trị']]
Chúng tôi cũng có thể thực hiện các thao tác nhấp chuột trên các phần tử web với sự trợ giúp của trình thực thi Javascript
1
2
3
4
5
6
7
8
# nhập webdriver
từ selenium nhập webdriver
trình điều khiển = trình điều khiển web. Chrome [executable_path = " . \\ chromedriver. exe"]
# lấy phương thức để khởi chạy URL
trình điều khiển. nhận["https. //www. tài liệu kiểm thử phần mềm. com/sample-webpage-to-automate/"]
# để nhấp vào nút bằng trình thực thi Javascript
btn = trình điều khiển. find_element_by_name ["spbutton"].nhấp chuột[]
trình điều khiển. execute_script ["arguments[0]. click[];",btn]
Có một số thao tác như cuộn xuống trang không thể thực hiện được với sự trợ giúp của Selenium. Đối với hành động này, Javascript Executor có thể được sử dụng cho mục đích này
Selenium là một công cụ tự động hóa dựa trên web mã nguồn mở phổ biến. Đôi khi, trình điều khiển web Selenium gặp phải sự cố khi tương tác với một số thành phần web. Ví dụ: người dùng mở một trang web và có một cửa sổ bật lên không mong muốn sẽ ngăn trình điều khiển web thực hiện các thao tác và tạo ra kết quả không chính xác. Đây là nơi JavascriptExecutor được sử dụng
JavaScriptExecutor trong Selenium là gì?
JavaScriptExecutor là một giao diện được sử dụng để thực thi JavaScriprt thông qua Selenium webdriver. JavaScript là ngôn ngữ lập trình tương tác với HTML trong trình duyệt và để sử dụng chức năng này trong Selenium, cần có JavascriptExecutor
JavascriptExecutor cung cấp hai phương thức
- ExecuteScript
- Thực thiAsyncScript
1. ExecuteScript
Phương thức này thực thi javaScript trong cửa sổ hoặc khung hiện được chọn. Tập lệnh chạy dưới dạng hàm ẩn danh và tập lệnh có thể trả về giá trị. Các kiểu dữ liệu được trả về là
- WebYếu tố
- Danh sách
- Chuỗi
- Dài
- Boolean
2. Thực thiAsyncScript
Phương pháp này được sử dụng để thực thi Javascript không đồng bộ trong cửa sổ hoặc khung hiện tại. Javascript không đồng bộ được thực thi là một luồng đơn trong khi phần còn lại của trang phân tích cú pháp liên tục. mà nâng cao hiệu suất
Bắt đầu với JavaScriptExecutor
1. Nhập gói
Nhập tổ chức. openqa. selen. JavascriptExecutor;
2. Tạo một tài liệu tham khảo
Trình điều khiển JavascriptExecutor js = [JavascriptExecutor];
3. Gọi phương thức JavascriptExecutor
js. execScript[script, args];
Javascript
// importing the package
Import org.openqa.selenium.JavascriptExecutor;
// creating a reference
JavascriptExecutor js = [JavascriptExecutor] driver;
// calling the method
js.executeScript[script, args];
Ví dụ về JavascriptExecutor trong Selenium
ví dụ 1. JavascriptExecutor trong Selenium để làm mới cửa sổ trình duyệt
Trình điều khiển JavascriptExecutor js = [JavascriptExecutor];
js. execScript[“vị trí. tải lại[]”];
ví dụ 2. JavascriptExecutor trong Selenium để gửi văn bản
Trình điều khiển JavascriptExecutor js = [JavascriptExecutor];
js. execScript[“tài liệu. getElementByID['id phần tử']. giá trị = ‘xyz’;”];
Ví dụ 3. Tạo cửa sổ bật cảnh báo
Trình điều khiển JavascriptExecutor js = [JavascriptExecutor];
js. execScript["alert['hello world'];"];
Ví dụ 4. Nhận InnerText của một trang web
Trình điều khiển JavascriptExecutor js = [JavascriptExecutor];
chuỗi sText = js. execScript[“trả lại tài liệu. tài liệuElement. văn bản bên trong;”]. toString[];
Ví dụ 5. Nhận tiêu đề của một trang web
Trình điều khiển JavascriptExecutor js = [JavascriptExecutor];
chuỗi sText = js. execScript[“trả lại tài liệu. chức vụ;"]. toString[];
Ví dụ 6. Trang cuộn
Trình điều khiển JavascriptExecutor js = [JavascriptExecutor];
//Cuộn dọc – xuống 150 pixel
js. execScript[“cửa sổ. scrollBy[0,150]”];
Nhấp vào một phần tử bằng JavaScriptExecutor
Trong ví dụ này, chúng tôi sử dụng Selenium webdriver và javascriptexecutor để mở trang web geeksforgeeks và nhấp vào một phần tử
Java
import
org.openqa.selenium.By;
import
org.openqa.selenium.JavascriptExecutor;
import
Import org.openqa.selenium.JavascriptExecutor;
1
import
Import org.openqa.selenium.JavascriptExecutor;
3
import
Import org.openqa.selenium.JavascriptExecutor;
5
Import org.openqa.selenium.JavascriptExecutor;
6 Import org.openqa.selenium.JavascriptExecutor;
7 Import org.openqa.selenium.JavascriptExecutor;
8
Import org.openqa.selenium.JavascriptExecutor;
9Import org.openqa.selenium.JavascriptExecutor;
6 // creating a reference
1 // creating a reference
2 // creating a reference
3
Import org.openqa.selenium.JavascriptExecutor;
9// creating a reference
5
// creating a reference
6// creating a reference
7
// creating a reference
8// creating a reference
9JavascriptExecutor js = [JavascriptExecutor] driver;
0
// creating a reference
8JavascriptExecutor js = [JavascriptExecutor] driver;
2JavascriptExecutor js = [JavascriptExecutor] driver;
3
JavascriptExecutor js = [JavascriptExecutor] driver;
4
// creating a reference
6JavascriptExecutor js = [JavascriptExecutor] driver;
6
// creating a reference
6JavascriptExecutor js = [JavascriptExecutor] driver;
8JavascriptExecutor js = [JavascriptExecutor] driver;
9 // calling the method
0
JavascriptExecutor js = [JavascriptExecutor] driver;
4
// creating a reference
6// calling the method
3
// creating a reference
6// calling the method
5
JavascriptExecutor js = [JavascriptExecutor] driver;
4
// creating a reference
6// calling the method
8
// creating a reference
6js.executeScript[script, args];
0_______5_______1JavascriptExecutor js = [JavascriptExecutor] driver;
3
JavascriptExecutor js = [JavascriptExecutor] driver;
4
// creating a reference
6js.executeScript[script, args];
5
// creating a reference
8js.executeScript[script, args];
7js.executeScript[script, args];
8js.executeScript[script, args];
9
JavascriptExecutor js = [JavascriptExecutor] driver;
4
// creating a reference
6import
2
// creating a reference
6import
4
JavascriptExecutor js = [JavascriptExecutor] driver;
4
// creating a reference
6import
7
// creating a reference
6import
9org.openqa.selenium.By;
0org.openqa.selenium.By;
1
Import org.openqa.selenium.JavascriptExecutor;
9org.openqa.selenium.By;
3
org.openqa.selenium.By;
3
Giải thích mã. Đoạn script trên dùng để mở Edge Browser và điều hướng đến trang web geeksforgeeks và nhấp vào một phần tử bằng JavaScriptExecutor. Vì vậy, hãy xem nó hoạt động như thế nào