Selenium WebDriver tốt hơn cả Selenium IDE và Selenium RC ở nhiều khía cạnh. Nó là một cách tiếp cận hiện đại và ổn định hơn trong việc tự động hóa các hành động của trình duyệt. WebDriver, không giống như Selenium RC, không dựa vào JavaScript cho tự động hóa. Nó kiểm soát trình duyệt bằng cách giao tiếp trực tiếp với nó.
Các ngôn ngữ được hỗ trợ:
- Java
- C#
- PHP
- Python
- Perl
- Ruby
Selenium WebDriver thường được sử dụng trong các trường hợp sau:
- Để sử dụng một ngôn ngữ lập trình nhất định trong việc thiết kế test case của bạn.
- Để kiểm tra các ứng dụng có nhiều chức năng dựa trên AJAX.
- Để thực hiện các kiểm thử trên trình duyệt HtmlUnit.
- Để tạo kết quả kiểm thử tùy chỉnh.
Nội dung chính
Kiến trúc
WebDriver được giải thích tốt nhất với một sơ đồ kiến trúc đơn giản như hình dưới đây.
Ví dụ sử dụng Selenium Webdriver
Chúng ta sẽ sử dụng trang https://www.calculator.net/ để thực hiện "tính phần trăm (%)" nằm trong "Math Calculator".
Trong ví dụ này, chúng ta sử dụng các công nghệ sau:
- Eclipse Oxygen 1
- Selenium 3.0.1
- JDK 1.8
- Chrome 67.0.3396.99 (Official Build) (64-bit)
Các bước thực hiện:
Step 1: Tạo Maven project trong Eclipse
Trước tiên bạn cần tạo Java Maven project trong eclipse, tham khảo bài này.
Step 2: Add Selenium Driver dependency
Sau khi tạo project bạn nên add selenium webdriver vào file pom.xml như sau:
<dependencies> <dependency> <groupId>org.seleniumhq.selenium</groupId> <artifactId>selenium-server</artifactId> <version>3.0.1</version> </dependency> </dependencies>
Tải thư viện selenium webdriver: click chuột phải vào project -> Maven -> Update project...
Step 3: Tải browser driver
Đây là một bước quan trong không kém. Tải chromedriver cho trình duyệt Chrome mới nhất tại https://sites.google.com/a/chromium.org/chromedriver/downloads.
Sau khi tải về bạn nên copy và giải nén vào thư mục D:\SeleniumWebdriver.
Step 4: Viết kịch bản
Bây giờ là lúc để viết code. Kịch bản sau đây khá dễ hiểu, vì nó có các chú thích đi kèm để giải thích các bước một cách rõ ràng.
package vn.viettuts.selenium; import java.util.concurrent.TimeUnit; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.chrome.ChromeDriver; public class WebDriverDemo { public static void main(String[] args) { // set chrome driver System.setProperty("webdriver.chrome.driver", "D:\\SeleniumWebdriver\\chromedriver.exe"); WebDriver driver = new ChromeDriver(); // wait for 10 seconds before throwing exception driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS); // open website driver.get("http://www.calculator.net/"); // Maximize the browser driver.manage().window().maximize(); // Click on Math Calculators driver.findElement(By.xpath(".//td[3]/div[2]/a")).click(); // Click on Percentage Calculator driver.findElement(By.xpath(".//a[@href='/percent-calculator.html']" + "[contains(text(),'Percentage Calculator')]")).click(); // Enter value 10 in the first number of the percent Calculator driver.findElement(By.id("cpar1")).sendKeys("10"); // Enter value 50 in the second number of the percent Calculator driver.findElement(By.id("cpar2")).sendKeys("50"); // Click Calculate Button driver.findElement(By.xpath(".//*[@id = 'content']" + "/table[1]/tbody/tr[2]/td/input[2]")).click(); // Get the Result Text based on its xpath String result = driver.findElement( By.xpath(".//p[@class='verybigtext']")).getText(); // Print a Log In message to the screen System.out.println(" The Result is " + result); // Close the Browser. driver.close(); } }
Kết quả:
The Result is 10% of 50 = 5
Các lệnh phổ biến trong Selenium WebDriver
Bảng sau liệt kê một số lệnh thường dùng nhất trong WebDriver cùng với cú pháp của chúng.
No. | Lệnh & Mô tả |
---|---|
1 |
driver.get("URL") Để điều hướng đến một trang web. |
2 |
element.sendKeys("inputtext") Nhập một số văn bản vào input box. |
3 |
element.clear() Xóa nội dung khỏi input box. |
4 |
select.deselectAll() Bỏ chọn tất cả OPTION từ SELECT đầu tiên trên trang. |
5 |
select.selectByVisibleText("some text") Chọn OPTION với đầu vào được chỉ định bởi người dùng. |
6 |
driver.switchTo().window("windowName") Di chuyển con trỏ chuột từ cửa sổ này sang cửa sổ khác. |
7 |
driver.switchTo().frame("frameName") Chuyển từ frame này sang frame có tên hoặc id là "frameName". |
8 |
driver.switchTo().alert() Xử lý alert. |
9 |
driver.navigate().to("URL") Chuyển hướng đến URL. |
10 |
driver.navigate().forward() Chuyển hướng đến trang tiếp theo. |
11 |
driver.navigate().back() Chuyển hướng về trang trước. |
12 |
driver.close() Đóng trình duyệt hiện tại và các liên kết đến driver. |
13 |
driver.quit() Thoát driver và đóng tất cả các cửa sổ liên quan đến driver đó. |
14 |
driver.refresh() Tải lại trang hiện tại. |