DevOps AI
  • Home
  • Bảo mật
  • AI & Automation
  • DevOps & Cloud
  • Bộ đề luyện thi cloud
No Result
View All Result
DevOpsAI
  • Home
  • Bảo mật
  • AI & Automation
  • DevOps & Cloud
  • Bộ đề luyện thi cloud
No Result
View All Result
DevOpsAI
No Result
View All Result
Home AI & Automation

Cách dùng JavaScript Executor trong Selenium

Huyen Tran by Huyen Tran
1 Tháng 5, 2025
in AI & Automation
0
Cách dùng JavaScript Executor trong Selenium
Share on FacebookShare on Twitter

Trong quá trình tự động hóa, đôi khi chúng ta không thể xử lý một số điều kiện hoặc sự cố với Webdriver, các điều khiển web không phản ứng tốt với các lệnh Selenium. Trong các tình huống này, chúng ta sẽ sử dụng JavascriptExecutor.

JavascriptExecutor là gì?

JavascriptExecutor là một Interface của Selenium, nó cho chúng ta tương tác với HTML DOM của trang web một cách trực tiếp – nghĩa là chúng ta có thể dùng nó để tự động hóa các tương tác người dùng thậm chí khi trang web chưa được load hoàn toàn và các phần tử không được phép tương tác trực tiếp. Nó rất hữu ích để xác định và tương tác với các phần tử bị ẩn và bị vô hiệu hóa trên trang web.

JavascriptExecutor có hai phương thức trừu tượng (abstract method) dùng để chạy javascript trên cửa sổ đã chọn hoặc trang hiện tại, đó là:

  • executeScript() –
  • executeAsyncScript()
JavascriptExecutor

Cả hai phương thức đều được dùng để thực thi một đoạn JavaScript không đồng bộ trong frame hoặc cửa sổ window đang được chọn.Script sẽ được thực thi dưới dạng phần thân của hàm ẩn danh. Chúng ta cũng có thể truyền các đối số phức tạp cho nó.

Related Post

Sử dụng VS Code và Playwright MCP tự động test demo website Demoblaze thông qua GitHub Copilot Agent

Sử dụng VS Code và Playwright MCP tự động test demo website Demoblaze thông qua GitHub Copilot Agent

16 Tháng 6, 2025
Selenium Tutorial – Java

Selenium Tutorial – Java

1 Tháng 5, 2025

Detox – gray box end-to-end testing automation framework cho ứng dụng React Native

1 Tháng 5, 2025

Cách xử lý các sự kiện bàn phím và chuột trong Selenium sử dụng class Actions

1 Tháng 5, 2025

Điểm khác nhau là:

  • Phương pháp executeAsyncScript() này thực thi một đoạn mã JavaScript không đồng bộ trong ngữ cảnh của cửa sổ hoặc khung hiện được chọn trong Selenium. Tập lệnh được gọi bằng executeAsyncScript phải báo hiệu về việc hoàn thành thực thi bằng hàm callback.
  • Các phương thức gọi bằng executeAsyncScript được sử dụng chủ yếu ở chế độ ngủ và phải được thực hiện trong trình duyệt đang được thử nghiệm hoặc khi các thử nghiệm phải được đồng bộ hóa trong ứng dụng AJAX.

Các cú pháp cơ bản của JavaScriptExecutor trong Selenium

Import the package

JavascriptExecutor thuộc package org.openqa.selenium nên đầu tiên chúng ta cần import nó như sau

import org.openqa.selenium.JavascriptExecutor;

Tạo một tham chiếu cho interface

Vì JavaScriptExecutor là một interface, nên chúng ta không thể tạo một đối tượng (object) cho nó, vì vậy chúng ta sẽ tạo tham chiếu cho interface và gán nó cho WebDriver instance bằng cú pháp bên dưới:

JavascriptExecutor js = (JavascriptExecutor) driver;
  • Bây giờ chúng ta sẽ gọi phương thức executeScript()/executeAsyncScript() để thực thi javascript.

Cách gọi phương thức executeScript()/executeAsyncScript()

Cú pháp:

js.executeScript(Script,Arguments);

Hoặc

<strong>js.executeAsyncScript(Script,Arguments);
  • Script – Đây là đoạn mã JavaScript cần được thưc thi.
  • Arguments – Các đối số của script. Có thể để trống.
  • Kết quả trả về là Boolean, Long, Double, String, List, Map, WebElement. hoặc null theo quy tắc sau
Đối với ..Kết quả trả về Ghi chú
Phần tử HTMLWebElement
Số thập phânDoubhle
Không là số thập phânLong
booleanboolean
Tất cả các trường hợp các trênString
ArrayList<Object>Trong đó mỗi đối tượng sẽ tuân theo các quy tắc ở trên
mapMap<String, Object>Trong đó giá trị sẽ tuân theo quy tắc ở trên
null hoặc emptyNull

Các trường hợp sử dụng JavascriptExecutor trong Selenium

Đối với Window/Browser

Tạo Alert Pop-up trong Selenium Webdriver

js.executeScript("alert('Welcome To devopsify - Automation Test');");

Có thể tạo các loại pop-up khác sử dung phương thức sau:

  • confirm() – Ví dụ: alert(“Are you sure you want to close this page?”)
  • prompt() – Ví dụ: prompt(“Please enter your fullname”, “Huyen”)

Lấy Height và Width của một trang web

String height = js.executeScript(“return window.innerHeight;”).toString();
String width = js.executeScript(“return window.innerWidth;”).toString();

Navigate tới trang web khác

js.executeScript("window.location = 'https://devopsify.co/');

Refresh browser window dùng javascript

js.executeScript("history.go(0)");

JavaScript: Đối tượng history chứa các URL được người dùng truy cập (trong cửa sổ trình duyệt). Nó có các thuộc tính/ phương thức sau

  • go() – Tải một trang cụ thể từ danh sách đã truy cập.
    • history.go(0)– Tải lại trang
    • history.go(-1)– giống với history.back() hay Nhấp vào nút Back của trình duyệt
    • history.go(1)– giống với history.forward()hay Nhấp vào nút Next của trình duyệt
  • back() – Tải một trang trước đó từ danh sách đã truy cập trước đó
  • forward() – Tải một trang kế tiếp từ danh sách đã truy cập trước đó
  • length() – Trả về số lượng URLs (trang) đã truy cập

Thực hiện Scroll (dọc/ngang) trên ứng dụng

Để thực hiện cuộn trang, chúng ta sẽ sử dụng phương thức scrollBy() của đối tượng window trong javaScript

Syntax:

js.executeScript(“window.scrollBy(x,y)”);

hoặc

js.executeScript(“scrollBy(x,y)”);
  • scrollBy() được dùng để cuộn trang theo chỉ số pixel đã chỉ định.
  • x – bắt buộc nhập, là số pixel để cuộn (theo chiều ngang). Giá trị dương cuộn sang phải, giá trị âm cuộn sang trái.
  • y – bắt buộc nhập, là số pixel để cuộn (theo chiều dọc). Giá trị dương cuộn xuống, giá trị âm cuộn lên.

Ví dụ

1 – Cuộn trang theo chiều dọc cho 500px

js.executeScript(“window.scrollBy(0,500)”);

2 – Cuộn trang theo chiều dọc cho đến hết

js.executeScript(“window.scrollBy(0,document.body.scrollHeight)”);

3 – Thực hiện cuộn trang theo chiều ngang 1000px

js.executeScript(“window.scrollBy(1000,0)”);

4 – Cuộn trang theo chiều ngang cho đến hết

js.executeScript(“window.scrollBy(0,document.body.scrollWidth)”);

Phóng to/thu nhỏ trang

js.executeScript(“document.body.style.zoom = '50%'”);

Lấy URL của webpage

String urlTxt =  js.executeScript("return document.URL;").toString();

Script: return document.URL-> lấy URL của webpage và trả về kiểu String

Lấy thuộc baseURI của webpage

String baseURI =  js.executeScript("return document.baseURI;").toString();

Lấy Title của webpage

String titleTxt =  js.executeScript("return document.title;").toString();

Lấy cookie

String cookie =  js.executeScript("return document.cookie;").toString(); 

To get the domain name

String domainName=  js.executeScript("return document.domain;").toString();

Các hoạt động của webElement

Nhập dữ liệu vào ô nhập liệu (textbox) dùng javascript

Thông thường chúng ta sẽ sử dụng phương thức element.sendKeys(“text”) để nhập dữ liệu vào ô nhập liệu. Nhưng ở đây chúng ta sẽ dùng javascript để thay thế.

js.executeScript("document.getElementById('element ID').value='enter text';");
  • document.getElementById(“ID’) – Lấy element dựa vào ID cụ thể
  • HTML DOM value attribute được dùng để lấy hoặc thiết lập giá trị của một thuộc tính
    • attribute.value – Lấy giá trị của thuộc tính
    • attribute.value = ‘value’ – Thiết lập giá trị cho thuộc tính

Lưu ý:

  • ID nên là duy nhất
  • Nếu có hai hay nhiều element có cùng ID, thì getElementById() sẽ trả về cái đầu tiên
  • Ngoài Id, chúng ta có thể sử dung các phương thức sau
    • document.getElementsByTagName()
    • document.getElementsByClassName()
    • document.querySelector()
    • document.querySelectorAll()

Lấy innertext của một element

String innerText = js.executeScript(" return document.documentElement.innerText;").toString();

Thực hiện nhấp (Click) vào một Button

js.executeScript("document.getElementById('element ID').click();");

Hoặc

WebElement webElement = driver.findElement(By.xpath("xpath_element"));
JavascriptExecutor js= (JavascriptExecutor)driver;
js.executeScript("arguments[0].click();", webElement);

Xử lý Checkbox bằng cách thiết lập giá trị ‘true’ hoặc ‘false’

Checkbox được chọn – true

js.executeScript("document.getElementById('element ID').checked=true;");

Checkbox bỏ chọn – false

js.executeScript("document.getElementById( 'element ID').checked=false;");

Thay đổi màu nền (background color) của phần tử web

WebElement webElement = driver.findElement(By.xpath("xpath_element"));
JavascriptExecutor js= (JavascriptExecutor)driver;
js.executeScript("arguments[0].style.backgroundColor = '" + color + "'", element);

Tô viền phần tử web

WebElement webElement = driver.findElement(By.xpath("xpath_element"));
JavascriptExecutor js= (JavascriptExecutor)driver;
js.executeScript("arguments[0].style.border='3px solid red'", webElement);

Các bạn có thể thực thi bất kỳ lệnh JavaScript nào sử dụng Selenium với cấu trúc giống với những ví dụ trên nhé!

Good luck!

Tags: automation testjavascript executorseleniumwebdriver
Huyen Tran

Huyen Tran

Related Posts

Sử dụng VS Code và Playwright MCP tự động test demo website Demoblaze thông qua GitHub Copilot Agent
AI & Automation

Sử dụng VS Code và Playwright MCP tự động test demo website Demoblaze thông qua GitHub Copilot Agent

by devopsify
16 Tháng 6, 2025
Selenium Tutorial – Java
AI & Automation

Selenium Tutorial – Java

by Huyen Tran
1 Tháng 5, 2025
Detox – gray box end-to-end testing automation framework cho ứng dụng React Native
AI & Automation

Detox – gray box end-to-end testing automation framework cho ứng dụng React Native

by Huyen Tran
1 Tháng 5, 2025
Next Post
Cài đặt Grafana – Loki – Promtail monitoring log Container

Cài đặt Grafana - Loki - Promtail monitoring log Container

Để lại một bình luận Hủy

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *

Recommended

Các website demo hay được sử dụng cho thực hành Automation Test

Các website demo hay được sử dụng cho thực hành Automation Test

11 Tháng 6, 2025
Cài đặt Maven trên Windows

Cài đặt Maven trên Windows

11 Tháng 6, 2025
Tổng hợp các phiên bản Stable Diffusion: So sánh, tính năng và yêu cầu phần cứng

Tổng hợp các phiên bản Stable Diffusion: So sánh, tính năng và yêu cầu phần cứng

13 Tháng 6, 2025
Sử dụng VS Code và Playwright MCP tự động test demo website Demoblaze thông qua GitHub Copilot Agent

Sử dụng VS Code và Playwright MCP tự động test demo website Demoblaze thông qua GitHub Copilot Agent

16 Tháng 6, 2025
Sử dụng VS Code và Playwright MCP tự động test demo website Demoblaze thông qua GitHub Copilot Agent

Sử dụng VS Code và Playwright MCP tự động test demo website Demoblaze thông qua GitHub Copilot Agent

16 Tháng 6, 2025
MCP server 2025 tốt nhất : Hướng dẫn chọn & bảo mật

MCP server 2025 tốt nhất : Hướng dẫn chọn & bảo mật

16 Tháng 6, 2025
DevOpsify Check Tool hỗ trợ MCP – Tự động hóa kiểm tra qua AI Claude & VS Code

DevOpsify Check Tool hỗ trợ MCP – Tự động hóa kiểm tra qua AI Claude & VS Code

13 Tháng 6, 2025
GitHub Action DevOpsify Check Tool – Tự động kiểm tra bảo mật & hiệu suất

GitHub Action DevOpsify Check Tool – Tự động kiểm tra bảo mật & hiệu suất

11 Tháng 6, 2025
DevOpsify

Cộng đồng DevOps Việt Nam chia sẽ kiến thức giúp tăng tốc quá trình phát triển ứng dụng và tự động hóa trong lĩnh vực Cloud DevOps & AI.

Bài viết mới

  • Sử dụng VS Code và Playwright MCP tự động test demo website Demoblaze thông qua GitHub Copilot Agent
  • MCP server 2025 tốt nhất : Hướng dẫn chọn & bảo mật
  • DevOpsify Check Tool hỗ trợ MCP – Tự động hóa kiểm tra qua AI Claude & VS Code

Categories

  • AI & Automation
  • Bảo mật
  • Chưa phân loại
  • DevOps & Cloud
  • Tin tức
No Result
View All Result
  • Home
  • Bảo mật
  • AI & Automation
  • DevOps & Cloud
  • Bộ đề luyện thi cloud

© 2025 DevOpsify