Bài 5 - Selenium WebDriver Wait Commands, Checkbox and Dropdown box

Topic Học Kiểm thử phần mềm tự động sẽ tiếp tục giới thiệu về các lệnh trong Selenium Webdriver.  

1) ImplicitlyWait Command

Việc tìm kiếm các yêu tố bất kỳ luôn mất 1 khoảng thời gian chờ đợi ngầm đã được thiết lập.  Dùng lệnh này để báo với Selenium rằng - Phải chờ   trong khoảng thời gian đó trước  khi ném 1 ngoại lệ rằng không tìm thấy các yếu tố trên trang.

WebDriver driver => new FirefoxDriver();
driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
driver.get("http://url_that_delays_loading");
WebElement myDynamicElement = driver.findElement(By.id("myDynamicElement"));

2) FluentWait Command

Xác định thời gian chờ  tối đa  cho 1 điều kiện  cũng như tần suất để kiểm tra điều kiện . Giup cấu hình khoảng thời gian chò đợi, bỏ qua các trường hợp ngoại lệ trong quá trình chờ khi tìm kiếm 1 phần tử trên trang

 // Waiting 30 seconds for an element to be present on the page, checking

  // for its presence once every 5 seconds.

  Wait wait = new FluentWait(driver)

    .withTimeout(30, SECONDS)

    .pollingEvery(5, SECONDS)

    .ignoring(NoSuchElementException.class);

  WebElement foo = wait.until(new Function() {

    public WebElement apply(WebDriver driver) {

    return driver.findElement(By.id("foo"));

    }

   });

3) ExpectedConditions Command

Một điều kiện hợp lý được mong đợi để giá trị cuối cùng không phải là null hoặc sai(false).

WebDriverWait wait = new WebDriverWait(driver, 10);

 WebElement element = wait.until(ExpectedConditions.elementToBeClickable(By.id(>someid>)));


4) PageLoadTimeout Command



Thiết lập giá trị thời gian để chờ đợi cho trang web  hoàn thành tải(loadding) trước khi ném một lỗi ngoại lệ

driver.manage().timeouts().pageLoadTimeout(100, SECONDS);

5) SetScriptTimeout Command

Thiết lập thời gian chờ đợi cho một kịch bản không đồng bộ để thực hiện hoàn thành trước khi ném một lỗi. Nếu thời gian chờ là tiêu cực, sau đó kịch bản sẽ được phép chạy vô thời hạn.

driver.manage().timeouts().setScriptTimeout(100,SECONDS);

6)Sleep Command

thread.sleep(1000);

Câu lệnh này hiếm khi được sử dụng vì nó luôn luôn buộc các trình duyệt chờ đợi một thời gian cụ thể. Nếu bạn sử dụng câu lệnh này bạn có thể xác định giá trị thời gian chờ đợi cao hơn nhiều khi bạn làm các trường hợp kiểm thử.

CheckBox & Radio Button Operations
Check box và Radio button cho phép người dung lựa chọn “ Check” hoặc “ Uncheck”  .

6)By.ID method

Radio Button và Checkbok – đều có ID và Name riêng.  Selenium webdriver sẽ tìm và nhận diện mỗi checkbox thông qua phương thức By.id



WebElement radioBtn =                                                    
driver.findElement(By.id("Học kiểm thử phần mềm"));                                                                                            
 radioBtn.click()
           

7) With ‘IsSelected’

Các checkbox hoặc radio button  có thể được lựa chọn hoặc chưa được lựa chọn. Làm sao để Selenium Webdriver biết rằng nó đã được lựa chọn hay chưa ? Dùng  “IsSelected” kiểm tra checkbox / Radion button box đã được chọn chưa .
// Khai báo

 List  oRadioButton = driver.findElements(By.name("toolsqa"));

 // tạo biến với mặt định ban đầu là ko check ( false)

 boolean bValue = false;

 // Kiểm tra  radion button đo đã được check hay chưa 

 bValue = oRadioButton.get(0).isSelected();

 // Kiểm tra nếu đã được chọn ( bvalue=true

 if(bValue = true){

                // nếu radio button  đầu tiên đã  được chọn mặc định thì sẽ chọn nút radio thứ 2
                oRadioButton.get(1).click();

 }else{

                // nút radio đầu tiên sẽ được chọn Nếu nó  không được chọn mặc định thì

                oRadioButton.get(0).click();

 }

Ở ví dụ trên , Tên của các radio button/ checkboxes trong cùng group là giống nhau nhưng giá trị khác nhau. Vì vậy  nếu tìm checkbox/ radiobuton với thuộc tính name thi sẽ nhận được nhiều giá trị . Do đó ta sử dụng phương thức  findElements  và lưu trữ trong list của WebElements


8. With ‘Value’

Bạn có thể chọn nút radio button / Checkbox  với các giá trị của nó
//Tìm checkbox hoặc nút radio bằng tên(Name)
List oCheckBox = driver.findElements(By.name(“eRadio”));
//Câu lệnh lấy số checkboxes hiện tại
int iSize = oCheckBox.size();
//Bắt đầu vòng lặp từ checkbox đầu tiên đến checkbox cuối cùng
for(int i=0; i < iSize ; i++ ){
//Lưu tên checkbox là một chuỗi , sử dụng thuộc tính Value
String sValue = oCheckBox.get(i).getAttribute(“value”);
//Chọn checkbox nếu giá trị của các checkbox giống nhau
if (sValue.equalsIgnoreCase(“toolsqa”)){
oCheckBox.get(i).click();
// Thoát khỏi vòng lặp
break;
}
}

8) By ‘CssSelector’ 

: Lựa chọn một radido hoặc checkbox bằng cách sử dụng giá trị của nó


1
2
3
WebElement oCheckBox = driver.findElement(By.cssSelector("input[value='Tools QA']"));
oCheckBox.click()

9) Selecting Dropdown/Multiple Select Box

Trước khi sử dụng Dropdown box  control, ta cần phải làm 2 việc sau:
  1. Import  gói  org.openqa.selenium.support.ui.Select
  2. Khai báo "Select" object trong  WebDriver
Cú pháp Lệnh
Select oSelection = new Select(driver.findElement(By.id(id)));

10) Chọn 1 giá trị sử dụng ‘selectByVisibleText’

Dùng để chọn 1 giá trị bất kỳ  trong danh sách lựa chọn của Dropdowbox  hoặc multiple selection boxes 

Select oSelection = new Select(driver.findElement(By.id(id)));

oSelection.selectByVisibleText(text);

11) Chọn giá trị sử dụng  ‘selectByIndex’

Gần giống  selectByVisibleText nhưng sự khác biệt là cung cấp các chỉ số của giá trị tùy chọn ứng

 
Select oSelection = new Select(driver.findElement(By.id(id)));
oSelection.selectByIndex(index);

12) Chọn giá trị sử dụng ‘selectByValue’

Mỗi option trong hợp thoại lựa chọn của Drop down box / Multiple Select Box đều có một values riêng, vì vậy ta có thể chọn values ứng với giá trị của từng lựa chọn

Select oSelection = new Select(driver.findElement(By.id(id)));

oSelection.selectByValue(value)

Note: Mỗi values ứng với từng giá trị lựa chọn trong option của của Drop down box / Multiple Select Box là duy nhất

12) Getting the Size of Select item

Đôi khi bạn có thể muốn đếm các phần tử trong Dropdowbox và Multiple Select Box, ta  có thể sử dụng vòng lặp trên Select element để đếm có bao nhiu option
Select oSelection = new Select(driver.findElement(By.id(id)));
List<WebElement> oSize = oSelection.getOptions();

int iListSize = oSize.size();

13)In danh sách các Options

Một khi bạn có được kích thước của các yếu tố Select sau đó nó rất dễ dàng để in các văn bản của các tùy chọn.

Select oSelection = new Select(driver.findElement(By.id(id)));

                List oSize = oSelection.getOptions();

                int iListSize = oSize.size();

                for(int i =0; i>iListSize ; i++){

                                String sValue = oSelection.getOptions().get(i).getText();

                                System.out.println(sValue);

                                }


14. Deselect methods

Chỉ áp dụng cho Multiple Select Box . Nếu trong trường hợp bạn muốn bỏ chọn bất kỳ tùy chọn lựa chọn và có thể được thực hiện với  deselectAll (), deselectByIndex, deselectByValue và deselectByVisibletext.
Select oSelection = new Select(driver.findElement(By.id(id)));

                oSelection.deselectAll();

                oSelection.deselectByIndex(index);

                oSelection.deselectByValue(value);

                oSelection.deselectByVisibleText(text);

15. Multiple selection method

Chỉ áp dụng cho Multiple Select Box  và không phải trên List boxes or dropdowns. .
Select oSelection = new Select(driver.findElement(By.id(id)));

                oSelection.selectByIndex(index)

                oSelection.selectByIndex(index)

                // Or

                oSelection.selectByVisibleText(text)

                oSelection.selectByVisibleText(text)

                // Or

                oSelection.selectByValue(value)

                oSelection.selectByValue(value)


16)Entering Values in Input Boxes

Dùng phương thức Sendkeys để nhập giá trị cho input field

driver.FindElement (By.name(“UserName”)).sendKeys(“Hockiemthuphanmem”);

17)Deleting Values in Input Boxes

Phương thức  clear()  dung để xóa các text defaut trong Textbox.

Driver.findElement(By.name(“Username”)).Clear ();


Bài tập áp dụng cho topic " Học kiểm thử phần mềm tự động" 

1)      Đăng nhập Mantis  ( Check “Remember my login in this browser” checkbox)
2)      Chọn Project “User guide”  trong Dropdownbox “ Project ”
3)      Chọn Report  Issues
4)      Lần lượt Chọn / Nhập giá trị vào các field  ( attach image)
5)      Click Submit
Học kiểm thử phần mềm tự động


Học kiểm thử phần mềm tự động



package HocKiemThuPhanMem;
import java.util.concurrent.TimeUnit;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.support.ui.Select;

public class PracticeWebdriver {

 public static WebDriver driver;

 public static void main(String[] args) {

  
  driver = new FirefoxDriver();
  driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
   driver.findElement(By.name("username")).sendKeys("Học kiểm thử phần mềm tự đông");
  driver.findElement(By.name("password")).sendKeys("Học Kiểm thử");
  
  WebElement checkRemember = driver.findElement(By.name("perm_login"));
  WebElement checkSession = driver.findElement(By.name("secure_session"));

// Kiểm tra remember checkbox đã check chưa, nếu chưa check //thì thực hiện click để check

  if (checkRemember.isSelected() == false) {
   checkRemember.click(); 
  }
// Kiểm tra Session đã check chưa, nếu chưa thì thực hiện click để check 
  if (checkSession.isSelected() == false) {
   checkSession.click();
  }

  driver.findElement(

    By.xpath("/html/body/div[3]/form/table/tbody/tr[6]/td/input"))
    .click(); // phan nay se hoc sau

// Chọn Project 


  WebElement GetProject = driver.findElement(By.name("project_id")); 

  String GetProjectCurrent = GetProject.getText();
// Nếu text hiện tại khác Project name sẽ chọn thì mới thực hiện chọn 
  if (GetProjectCurrent != "User guide") {
   Select dropProject = new Select(driver.findElement(By
     .name("project_id")));
   dropProject.selectByVisibleText("User guide");
  }

// Click Report issue

  driver.findElement(By.linkText("Report Issue")).click();

// Khai báo biến 

  String category = "category_id";
  String reproducibility = "reproducibility";
  String Severity = "severity";
  String Priority = "priority";
// Chọn Category
  Select drpCategory = new Select(driver.findElement(By.name(category)));
  drpCategory.selectByVisibleText("All");

// Chọn reproducibility

  Select drpreproducibility = new Select(driver.findElement(By
    .name(reproducibility)));
  drpreproducibility.selectByVisibleText("always");

// CHọn Severity

  Select drpSeverity = new Select(driver.findElement(By.name(Severity)));
  drpSeverity.selectByVisibleText("major");

//Chọn Priority

  Select drpPriority = new Select(driver.findElement(By.name(Priority)));
  drpPriority.selectByVisibleText("high");
// Input Steps
  String Steps = " This is demo" ;
  String additional_info = " This is demo for Học kiểm thử phần mềm";
  String Platform = "IOS";

  driver.findElement(By.name("summary"))

    .sendKeys(
      "[Firefox][Run-Selenium Driver]The issue is posted by WebDriver for Học kiểm thử phần mềm tự động topic");

  driver.findElement(By.name("description")).clear();

  driver.findElement(By.name("description")).sendKeys(Steps);
  driver.findElement(By.name("additional_info"))
    .sendKeys(additional_info);
  Select PlatformSelect = new Select(driver.findElement(By
    .name("custom_field_1")));
  PlatformSelect.selectByVisibleText(Platform);

//Upload image - CHọn image trong ổ đĩa lưu trữ 

  WebElement uploadElement = driver.findElement(By.id("ufile[]"));
  uploadElement.sendKeys("D:\\SOFT\\Demo-Image\\Hoc-kiem-thu-phan-mem-2.jpg");

  driver.findElement(By.cssSelector("input[value='50']")).click();

// Click Submit
  driver.findElement(By.cssSelector("input[value='Submit Report']"))
    .click();
    
// Logout
 driver.findElement(By.linkText("View Issues")).click();
driver.findElement(By.linkText("Logout")).click();

  }


}


           

Video thực hành học kiểm thử phần mềm tự động



-----------------------

Học kiểm thử phần mềm 



Xem nhiều nhất

Zui Zui

Nếu bạn không đủ mạnh -Đừng cố đi ngược đám đông