Vấn đề khi học selenium Webdriver:
Hầu hết các tester khi học đến Selenium Webdriver đều có thể viết được những đoạn script đơn giản sau khi copy code từ trên mạng hoặc là làm theo những video hướng dẫn nhưng sau đó muốn mở rộng, học thêm các câu lệnh khác thì không biết phải học và tìm ở đâu.
Mình lúc đầu học cũng vậy, người ta bảo gì thì biết nấy thôi, không biết vì sao lại thế. Nên mình sẽ viết một vài bài để hướng dẫn các bạn cách đọc document hướng dẫn của selenium và tiện thể mình sẽ viết về 1 số method của Webdriver, WebElement, Alert…
Nội dung bài viết
I. Document API của selenium Webdriver.
Bạn đang sử dụng ngôn ngữ nào thì đọc phần tương ứng, ở đây mình dùng Java nên sẽ sử dụng Javadoc.
II. Những method của interface WebDriver.
Interface WebDriver nằm trong pagekage org.openqa.selenium.
- Dùng để đóng browser đang run. Nếu có 3 firefox đang được control bằng driver thì chỉ có cái firefox đang active được đóng thôi.
- Type void: Có nghĩa là nó ko trả lại cái gì cả, do đó chỉ cần viết
driver.close();
- Tìm kiếm cái element đầu tiên mà match với điều kiện, chỉ lấy 1 element duy nhất.
- Type WebElement: có nghĩa là nó sẽ return lại 1 giá trị loại WebElement.
- Có thể viết các kiểu sau đây.
String abc = driver.findElement(By.id("submitButton")).getText();
hoặc
WebElement btnSubmit = driver.findElement(By.id("submitButton")); String abc = btnSubmit.getText();
- Tìm kiếm tất cả các element mà match với điều kiện
- Type java.util.List<WebElement>: nó sẽ return lại 1 list các giá trị loại WebElement.
- Có thể viết code như sau:
List<WebElement> options = driver.findElements(By.xpath("//option"));
Và vì đây là list nên để tương tác với từng element ở trong list thì chúng ta thường sẽ sử dụng vòng lặp. Ví dụ:
for(int i=0; i < options.size(); i++){ System.out.println(options.get(i).getText()); }
- Mở 1 page mới ở trên browser hiện tại.
- Ví dụ:
driver.get("http://seleniumhq.github.io/selenium/docs/api/java/index.html")
- Lấy cái url mà browser đang chạy ở thời điểm hiện tại
- Type String: nó sẽ return lại 1 giá trị kiểu String.
- Cái này có thể dùng trong trường hợp debug, 1 test case của mình trải qua nhiều action mà giữa chừng nó chết, mình dùng method này để có thêm thông tin rồi fix issue. Cú pháp tương đối đơn giản:
String msg = driver.getCurrentUrl();
- Lấy toàn bộ source HTML ở thời điểm hiện tại, bạn có thể chọn “View Page Source” khi click chuột phải vào 1 page hoặc Ctrl+U để xem.
- Type String: nó sẽ return lại 1 giá trị kiểu String.
- Code đơn giản:
String pageSrc = driver.getPageSource();
- Lấy cái Title page mà browser đang chạy ở thời điểm hiện tại
- Type String: nó sẽ return lại 1 giá trị kiểu String.
- Code
String pageTitle = driver.getTitle();
- Lấy cái “mã số” của cái browser đang run.
- Type String: nó sẽ return lại 1 giá trị kiểu String.
- Cái này thường được dùng khi xử lý những phần có nhiều browser. Ví như: Click vào 1 đường link ở page hiện tại, nó open 1 browser mới. Mỗi browser này sẽ có 1 mã số để phân biệt chúng với nhau.
- Code:
String handle = driver.getWindowHandle();
- Lấy cái toàn bộ các “mã số” của các browser đang run mà có sử dụng instance driver. Ví dụ nếu 1 cái browser mở lên do mình tự mở, ko phải selenium thì sẽ ko lấy đc “mã số”.
- Type java.util.Set<java.lang.String>: nó sẽ return lại 1 Set các giá trị kiểu String, Set có ý nghĩa là sẽ không có dữ liệu bị lặp.
Set<String> handle= driver.getWindowHandles(); for (String handle : driver.getWindowHandles()) { driver.switchTo().window(handle); }
Tương tự phần findelements(), để tương tác được với Set thì ta dùng vòng lặp. Ví dụ:
Set<String> AllWindowHandles = driver.getWindowHandles(); String window1 = (String) AllWindowHandles.toArray()[0]; System.out.print("window1 handle code = "+AllWindowHandles.toArray()[0]); String window2 = (String) AllWindowHandles.toArray()[1]; System.out.print("\nwindow2 handle code = "+AllWindowHandles.toArray()[1]);
- Get cái interface Options
- Ví dụ: Phóng to cái browser.
driver.manage().window().maximize();
- Get cái interface Navigation
- Ví dụ: Back lại page trước
driver.navigate().back();
- Dùng để đóng tất cả các instance browser đang được control bằng driver.
- Ví dụ:
driver.quit();
- Get cái interface TargetLocator
- Ví dụ: Chuyển driver sang 1 phần tử ngoài page ví dụ: window khác, alert, iframe.
driver.switchTo().alert();
Cuối cùng cũng hết, dài quá, nếu có bất cứ thắc mắc các bạn hãy để lại comment nhé. Nếu thấy bài viết hữu ích, hãy share cho bạn tester nào đó đang học selenium Webdriver. 😀
[…] ← Previous […]
[…] [Bài 4] Những method của interface WebDriver […]
[…] các method khác nhau để điều khiển cái browser. Các bạn có thể đọc lại bài này để hiểu thêm về các method của interface […]
[…] hiểu thì đó là việc chúng ta đang sử dụng trực tiếp object Driver và những method của nó. Ví dụ […]
Bài viết rất hay, Mỗi bài viết bạn cho thêm ví dụ nữa thì tốt quá
Ví dụ mình viết ở những bài tiếp theo rồi bạn.
Thanks em!
em học selenium để crawl data, đọc bài viết của a rất dễ hiểu <3
Thanks em