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


Thông báo về việc đăng ký mới thành viên: Sau khi đăng ký thành viên xong, các bạn vui lòng Thông báo cho Quản Trị Viên theo link này
để Quản Trị Viên sẽ kích hoạt tài khoản cho các bạn nhé. Xin lỗi vì sự bất tiện này.

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.

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

Postby 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
tuancv5
 
Posts: 1
Joined: Tue 08 Aug, 2017 9:06 pm

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

Postby 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 đó.
tvn
 
Posts: 4687
Joined: Tue 10 Aug, 2010 10:11 am
Location: HCM

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

Postby 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
daominhdam
 
Posts: 27
Joined: Sun 03 Feb, 2013 8:18 pm
Location: Đà nẵng



Return to Selenium

Who is online

Users browsing this forum: No registered users and 2 guests