Nội dung bài viết
I. Code Test khi bạn mới học Selenium Webdriver
Đây là đoạn code mà bạn thường bắt gặp trong những bài hướng dẫn ở trên mạng về selenium webdriver.
public class LoginSpec { WebDriver driver; @BeforeEach public void setUp() { System.setProperty("webdriver.chrome.driver", "src\\test\\resources\\chromedriver.exe"); driver = new ChromeDriver(); driver.get("http://localhost/wp/wp-login.php"); driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS); driver.manage().window().maximize(); } @AfterEach public void tearDown() { if (driver != null) { driver.quit(); } } @Test public void login_success() { driver.findElement(By.id("user_login")).sendKeys("giang"); driver.findElement(By.id("user_pass")).sendKeys("12345678"); driver.findElement(By.id("wp-submit")).click(); assertEquals("http://localhost/wp/wp-admin/", driver.getCurrentUrl()); } }
Nhược điểm khi viết thế này:
- Bạn dùng trực tiếp API của selenium trong phần Test
- Bạn chả biết step của mỗi test thế nào, do đó bạn thường phải viết comment vào trong từng dòng code để giải thích ý nghĩa
II. Code test khi bạn đã sử dụng POM
class LoginSpec2 extends BaseTest { LoginPage loginPage; HomePage homePage; @Test public void login_success_2() { loginPage = new LoginPage(driver); homePage = new HomePage(driver); loginPage.login("giang", "12345678"); homePage.isRightURL(); } }
- Điểm tốt: Test ngắn gọn, trong sáng, dễ hiểu hơn
- Điểm chưa tốt: Test vẫn chưa được readable lắm và phần khó hiểu được chuyển vào trong Class Page
III Code test khi bạn áp dụng Fluent Interface
class LoginSpec3 extends BaseTest3{ LoginPage login = getLoginPage(); HomePage home = getHomePage(); @Test public void admin_login_successfully(){ login.act().inputUsername("giang") .inputPassword("12345678") .submit(); home.verify().isRightURL(); } }
Điểm tốt:
- Test dễ đọc hơn chút nữa
- Phần action và verify được thể hiện rõ ràng
Điểm chưa tốt:
- Phần code low-level trở nên nhiều hơn, hơi khó tiếp cận cho người mới
[…] bài 2, code của test sẽ có hình dạng như […]
[…] ← Previous Next → […]