Chào các bạn đã đến với chủ đề tiếp theo của mình. Hôm nay, mình sẽ tiếp tục hướng dẫn các bạn cách xử lý với control button. Về control này thì chắc hẳn mọi người đã quá quen với nó rồi. Bạn có thể gặp button này ở bất cứ màn hình nào, ví dụ như Login, submit form, mua hàng online …
Về control button thì mình thường có những thao tác chính như sau:
- Click vào button
- Double click
- Right click
- Hover And verify tooltip
- Verify button status: enabled / disabled
Nào, mình cùng bắt đầu nhé.
Nội dung
1. Các hàm sử dụng cho control Button
1.1. Hàm click()
- Hàm này dùng để giả lập hành động của user click vào button/checkbox/radio button/link
- Ví dụ:
driver.findElement(By.xpath("//button[@type='submit']")).click();
1.2. Hàm doubleClick()
- Hàm này dùng để giả lập hành động của user double click vào button
- Ví dụ:
package org.example;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.interactions.Actions;
import org.testng.Assert;
import org.testng.annotations.AfterClass;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
public class Button {
WebDriver driver;
@BeforeClass
public void beforeClass() {
driver = new ChromeDriver();
driver.manage().window().maximize();
}
@Test
public void TC_01_DoubleClick() {
driver.get("https://demoqa.com/buttons");
// Double click to button 'Double Click Me'
Actions action = new Actions(driver);
WebElement doubleClick = driver.findElement(By.xpath("//button[text()='Double Click Me']"));
action.doubleClick(doubleClick).perform();
// Get message and verify
String message = driver.findElement(By.id("doubleClickMessage")).getText();
Assert.assertEquals(message, "You have done a double click");
sleepInSecond(5);
}
public void sleepInSecond(long timeInSecond) {
try {
Thread.sleep(timeInSecond * 1000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
@AfterClass
public void afterClass() {
driver.quit();
}
}
1.3. Hàm contextClick()
- Hàm này dùng để giả lập hành động của user right click vào button
- Ví dụ:
@Test
public void TC_02_RightClick(){
driver.get("https://demoqa.com/buttons");
// Double click to button 'Right Click Me'
Actions action = new Actions(driver);
WebElement rightClick = driver.findElement(By.xpath("//button[text()='Right Click Me']"));
action.contextClick(rightClick).perform();
// Get message and verify
String message = driver.findElement(By.id("rightClickMessage")).getText();
Assert.assertEquals(message, "You have done a right click");
sleepInSecond(5);
}
1.4. Hàm moveToElement()
- Hàm này dùng để giả lập hành động của user hover vào button
- Ví dụ:
@Test
public void TC_03_Hover_ToolTip(){
driver.get("https://jqueryui.com/resources/demos/tooltip/default.html");
// Hover to Age text box
Actions action = new Actions(driver);
WebElement element_tooltip = driver.findElement(By.id("age"));
action.moveToElement(element_tooltip).perform();
// Get tooltip and verify
String tooltip = driver.findElement(By.className("ui-tooltip-content")).getText();
Assert.assertEquals(tooltip, "We ask for your age only for statistical purposes.");
sleepInSecond(5);
}
1.5. Hàm isEnabled()
- Hàm này dùng để kiểm tra control đang enabled hay disabled?
- Ví dụ:
@Test
public void TC_04_VerifyButtonDisabled(){
driver.get("https://testkru.com/Elements/Buttons");
// Verify button 'Disabled' button is disabled
WebElement disabledButton = driver.findElement(By.id("disabledButton"));
boolean isEnabled = disabledButton.isEnabled();
Assert.assertEquals(isEnabled, false);
sleepInSecond(5);
}
Dưới đây là full code của những phần trên:
package org.example;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.interactions.Actions;
import org.testng.Assert;
import org.testng.annotations.AfterClass;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
public class Button {
WebDriver driver;
@BeforeClass
public void beforeClass() {
driver = new ChromeDriver();
driver.manage().window().maximize();
}
@Test
public void TC_01_DoubleClick() {
driver.get("https://demoqa.com/buttons");
// Double click to button 'Double Click Me'
Actions action = new Actions(driver);
WebElement doubleClick = driver.findElement(By.xpath("//button[text()='Double Click Me']"));
action.doubleClick(doubleClick).perform();
// Get message and verify
String message = driver.findElement(By.id("doubleClickMessage")).getText();
Assert.assertEquals(message, "You have done a double click");
sleepInSecond(5);
}
@Test
public void TC_02_RightClick(){
driver.get("https://demoqa.com/buttons");
// Double click to button 'Right Click Me'
Actions action = new Actions(driver);
WebElement rightClick = driver.findElement(By.xpath("//button[text()='Right Click Me']"));
action.contextClick(rightClick).perform();
// Get message and verify
String message = driver.findElement(By.id("rightClickMessage")).getText();
Assert.assertEquals(message, "You have done a right click");
sleepInSecond(5);
}
@Test
public void TC_03_Hover_ToolTip(){
driver.get("https://jqueryui.com/resources/demos/tooltip/default.html");
// Hover to Age text box
Actions action = new Actions(driver);
WebElement element_tooltip = driver.findElement(By.id("age"));
action.moveToElement(element_tooltip).perform();
// Get tooltip and verify
String tooltip = driver.findElement(By.className("ui-tooltip-content")).getText();
Assert.assertEquals(tooltip, "We ask for your age only for statistical purposes.");
sleepInSecond(5);
}
@Test
public void TC_04_VerifyButtonDisabled(){
driver.get("https://testkru.com/Elements/Buttons");
// Verify button 'Disabled' button is disabled
WebElement disabledButton = driver.findElement(By.id("disabledButton"));
boolean isEnabled = disabledButton.isEnabled();
Assert.assertEquals(isEnabled, false);
sleepInSecond(5);
}
public void sleepInSecond(long timeInSecond) {
try {
Thread.sleep(timeInSecond * 1000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
@AfterClass
public void afterClass() {
driver.quit();
}
}
Sau khi execute xong, bạn sẽ thấy kết quả như sau:
2. Kết
Như vậy chúng ta đã tìm hiểu qua 1 số hàm xử lý cho control button. Cảm ơn các bạn đã theo dõi bài viết của mình. Chúc các bạn thành công. Hẹn gặp lại các bạn ở những chủ đề tiếp theo.