Hỏi về cách kiểm tra nếu element không tồn tại

Nơi các bạn có thể tìm thấy mọi thông tin cần thiết về Selenium testing tool
Forum rules
Nơi trao đổi, chia sẻ thông tin liên quan đến testing tool Selenium.
Nên search trước khi post bài.
Post Reply
tuancv5
Hoc Tester
Posts: 1
Joined: Tue 08 Aug, 2017 9:06 pm
Contact:

Hỏi về cách kiểm tra nếu element không tồn tại

Post by tuancv5 » Thu 09 Nov, 2017 10:55 am

Hi Các Anh/ Chị.
Em đang tìm hiểu về automation test nhưng đang gặp phải một vấn đề. Nhờ mọi người chỉ giúp.
Đó là em có một câu lệnh viết thế này
List<WebElement> rows = driver.findElements(By.xpath("//div[@row]"));
và 1 câu lệnh kiểm tra if (rows .size() > 0) thì thông bảo element không tồn tại..
Nếu tìm thấy element rows thì vẫn chạy bình thường.
Nhưng khi không tìm thấy element rows thì khi chạy đến câu lệnh List<WebElement> rows = driver.findElements(By.xpath("//div[@row]"));
thì lại không chạy được.
Em debug thì thấy báo Thread [Forwarding findElement on session fd4127e7-b651-433c-aef2-a45e744c2a07 to remote] (Stepping).

Em không biết xử lý như thế nào. Mong mọi người chỉ giúp.
Em cảm ơn



tvn
Admin
Posts: 4795
Joined: Tue 10 Aug, 2010 10:11 am
Location: HCM
Contact:

Re: Hỏi về cách kiểm tra nếu element không tồn tại

Post by tvn » Thu 09 Nov, 2017 8:38 pm

Xin chào,
Bạn thử theo cách này xem sao nha.

Code: Select all

public Boolean apply(WebDriver input) {
    try {
        input.findElement(By.xpath(String.format(
                Locators.CHECK_TEXT_IN_FIRST_STATUS_BOX, text)));
        return false;
    } catch (NoSuchElementException e) {
        return true;
    }
}
Theo như đoạn code này thì sau khi chờ 1 lúc (hết thời gian timeout) không thấy element, WebDriver sẽ văng ra exception. Lúc đó mình nhận được exception thì return TRUE => đồng nghĩa là không có element đó.



daominhdam
Fresher Tester
Posts: 27
Joined: Sun 03 Feb, 2013 8:18 pm
Location: Đà nẵng
Contact:

Re: Hỏi về cách kiểm tra nếu element không tồn tại

Post by daominhdam » Tue 12 Dec, 2017 3:29 am

tuancv5 wrote:Hi Các Anh/ Chị.
Em đang tìm hiểu về automation test nhưng đang gặp phải một vấn đề. Nhờ mọi người chỉ giúp.
Đó là em có một câu lệnh viết thế này
List<WebElement> rows = driver.findElements(By.xpath("//div[@row]"));
và 1 câu lệnh kiểm tra if (rows .size() > 0) thì thông bảo element không tồn tại..
Nếu tìm thấy element rows thì vẫn chạy bình thường.
Nhưng khi không tìm thấy element rows thì khi chạy đến câu lệnh List<WebElement> rows = driver.findElements(By.xpath("//div[@row]"));
thì lại không chạy được.
Em debug thì thấy báo Thread [Forwarding findElement on session fd4127e7-b651-433c-aef2-a45e744c2a07 to remote] (Stepping).

Em không biết xử lý như thế nào. Mong mọi người chỉ giúp.
Em cảm ơn
Cơ chế của Selenium là nó sẽ locate element trước khi thực hiện 1 action lên đó. Cách check này ko ổn vì nó ko chạy qua cái step đầu tiên nếu ko tìm thấy element dc. Bạn thử cách này xem ntn nhé:
- dùng explicitWait, wait cho 1 element invisible (bị ẩn trên page)
WebDriverWait wait = new WebDriverWait(driver, 15);
wait.until(ExpectedConditions.invisibilityOfElementLocated(By.xpath("//div[@row]")));
Nếu vẫn ko được thì contact mình giúp. :)


Dam Dao
Skype: daominhdam
Email: daominhdam@gmail.com
Blog: https://automationfc.com

tvn
Admin
Posts: 4795
Joined: Tue 10 Aug, 2010 10:11 am
Location: HCM
Contact:

Re: Hỏi về cách kiểm tra nếu element không tồn tại

Post by tvn » Tue 12 Dec, 2017 10:57 pm

Cám ơn Đảm đã giúp, lâu lắm rồi mới thấy xuất hiện :D



Post Reply

Return to “Selenium”