Find your elements faster ios appium in robotframework

Chào các bạn!
Nếu ai đã từng auto cho ios sử dụng appium, thì sẽ nhận ra rằng sử dụng xpath sẽ chậm hơn khá nhiều so với dùng ID hoặc Name.
Hiện tại chúng ta có thể cải thiện tốc độ bằng cách hạn chế sử dụng Xpath.
Thay vào đó chúng ta có thể tìm theo iOS PredicateClass Chain
Bài viết này sẽ hướng dẫn các bạn tăng tốc độ tìm element với ios trong robotframework.
Trước tiên chúng ta sẽ xem tốc độ của xpath so với iOS Predicate và Class Chain là như nào với ví dụ dưới đây



Có thể chúng ta thấy tốc độ chênh lệch nhau không nhiều trong 1 TC. nhưng nếu chúng ta có 100 hay 200 testcase thì chúng ta cũng tiết kiệm được kha khá thời gian đấy :D

ok, giờ chúng ta sẽ đi vào chi tiết như sau:

Cách dùng iOS Predicate 

1. trường hợp đơn giản nhất là button có label là Scrolling

type == 'XCUIElementTypeButton' AND label == "Scrolling"

2. như trường hợp 1 nhưng muốn thêm visiable vào thì như sau:

type == 'XCUIElementTypeButton' AND label == "Scrolling" AND visible == 1

3. trường hợp muốn tìm button có label bắt đầu bằng chữ Scroll

type == 'XCUIElementTypeButton' AND label BEGINSWITH 'Scroll' AND visible == 1

4. trường hợp mà muốn tìm button có chứa Scroll

type == 'XCUIElementTypeButton' AND label CONTAINS 'Scroll' AND visible == 1

Thông tin chi tiết thì các bạn xem thêm ở đây nhé.

Cách dùng Class Chain

1. chọn button thứ 3 sau thằng cha

**/XCUIElementTypeWindow/XCUIElementTypeButton[3]

2. chọn tất cả các các Cell, trong đó name bắt đầu bằng 'B'

**/XCUIElementTypeCell['name BEGINSWITH "B"']

Nhiều cách sử dụng hơn thì xem tại đây nhé

Qua bài viết này, chúng ta có thêm lựa chọn để tăng tốc độ tìm kiếm element trong ios khi dùng appium. Qua đó làm giảm thời gian chạy testcase bằng cách dùng iOS Predicate  và Class Chain để thay thế xpath trong 1 số trường hợp.

Mọi góp ý xin để lại dưới bình lựng!
Xin cảm ơn và hẹn gặp lại các bạn trong các bài tiếp theo!

Code ví dụ có trên github, các bạn clone ở đây nhé


0 comments:

Post a Comment