Locators trong Webdriver

Bài trước chúng ta đã tìm hiểu về selenium và chạy những dòng code đầu tiên, hôm nay chúng ta sẽ tìm hiểu cách làm sao lấy được ID hay Name của các phần tử trong web.
Nội dung bài viết này tìm hiểu về:
  1. Giới thiệu về WebElement, findElement...
  2. Tìm hiểu về cách nhập text cho textbox 
  3. Tìm cách click vào button, checkbox, radio button
Tìm hiểu về  WebElement, findElement(), findElements()
Selenium Webdriver coi mỗi phần tử là 1 đối tượng WebElement. Dựa vào các kỹ thuật khác nhau mà chúng ta xác định nó là các phần tử như id, name, xpatch, tagname...
WebElement cung cấp 2 phương thức để tìm elements:
  • findElement() - kết quả trả về là 1 đối tượng duy nhất
  • findElements() - kết quả trả về là danh sách các đối tượng
Chúng ta sử dụng phương thức findElement() nhiều hơn, nên bài viết này mình sẽ đi sâu vào phương thức này.
Trước tiên, để sử dụng phương thức này, chúng ta cần import dòng sau trong code
import org.openqa.selenium.WebElement;

Hãy quan sát kịch bản dưới đây để thấy rõ hơn.
kịch bản là
-truy cập vào http://demo.guru99.com/selenium/webform/login.html
-sau đó nhập email(name) và pass rồi ấn nút Singin



Trong đoạn code trên mình đã giải thích khá là rõ ràng rồi :D

  System.setProperty("webdriver.chrome.driver","C:\\chrome\\chromedriver.exe");
  WebDriver driver=new ChromeDriver();
  
  String url="http://demo.guru99.com/selenium/webform/login.html";
  driver.get(url);
  
  //tìm phần tử để nhập email
  WebElement email = driver.findElement(By.id("email"));
  //tìm phần tử để nhập pass
  WebElement pass = driver.findElement(By.name("passwd"));
  //tìm phần tử để click vào đăng nhập 
  WebElement login = driver.findElement(By.name("SubmitLogin"));
  
  //nhập id 
  email.sendKeys("mngr93370");
  //nhập pass
  pass.sendKeys("tagetez");
  
  //click vào button đăng nhập
  login.click();

cách để xác định xem phần tử nào là ID hoặc name, bạn có thể dùng Chrome để xác định.
Trước tiên, chúng ta mở link http://demo.guru99.com/selenium/webform/login.html
Sau đó, ở textbox Email, chuột phải vào đó, chọn Kiểm tra - như ảnh dưới đây


Chúng ta thấy ở Email, có cả ID và Name, nhưng chúng ta chỉ cần 1 cái là đủ. Trong code trên, mình dùng ID
Còn ở password, cũng có cả 2, nhưng mình dùng Name cho thay các bạn dễ hình dung nếu dùng Name sẽ khác Id thế nào.
OK, tương tự thì nút đăng nhập cũng vậy, mình dùng Name.

Các bạn sẽ thắc mắc là làm sao để có được name và pass như trong code trên?
để có name và pass, chúng ta cần vào trang demo của guru99 - http://demo.guru99.com/
khi vào trang đó, nhập 1 email tùy ý, bạn sẽ có name và pass, sau đó hãy copy nó và lưu lại.
Chú ý, name và pass này chỉ dùng được 20 ngày, hết 20 ngày thì lại cần vào lấy name và pass khác nhé.
Trang này mình dùng để thực hành, rất tiện lợi :D

Vậy là chúng ta đã xác định được 2 thành phần cực kỳ cơ bản là textbox và button.
còn các thành phần khác như radio, checkbox... thì sao?
nói chung cũng cơ bản vậy thôi :D
- radio thì cũng như button, cũng sẽ dùng click. ví dụ:
driver.findElement(By.id("vfb-7-1")).click();
ở bên trên các bạn thấy mình có đặt tên biến cho nó, sau đó mới dùng các phương thức như sendKey() hoặc click(). Ở đây chúng ta có thể kết hợp luôn cũng được.
-checkbox cũng tương tự thôi, cũng dùng click() nhé
ví dụ dưới đây của guru99 sẽ cho chúng ta thấy trạng thái của checkbox bằng cách dùng phương thức isSelected() để kiểm tra.
Giải thích 1 chút về đoạn code trong ảnh.
Kịch bản là truy cập vào FB, sau đó dùng vòng for để click vào checkbox 2 lần và in ra kq.
Lần đầu tiên nó được click thì là true, lần thứ 2 nó sẽ chuyển thành false vì được click thêm.

Ok, bài sau chúng ta sẽ tìm hiểu các thành phần khác nhé.

0 comments:

Post a Comment