Shirates에서 상대 선택기를 사용하는 방법 - 2부 -
선택기 표현식
화면에서 요소를 선택하기 위해 선택자 표현식을 사용할 수 있습니다. 이것은 간단하고 강력한 표현입니다(참조).
상대 선택기
화면에서 요소를 선택한 후 상대적으로 요소 주위에 다른 요소를 가져오고 싶을 수 있습니다. 이 경우 Shirates의 상대 선택기를 사용할 수 있습니다.
상대 선택기(위젯 흐름 기반)
위젯 흐름과 함께 상대적으로 위젯을 얻을 수 있습니다.
위젯 흐름 알고리즘
위젯 흐름 알고리즘은 수직 위치(첫 번째 그룹 - 여섯 번째 그룹)로 위젯을 그룹화한 다음 각 그룹의 위젯을 왼쪽에서 오른쪽으로, 그리고 위에서 아래로 검색합니다.
첫 번째 그룹에서 위젯 흐름 순서는 (0),(1),(2)입니다.
두 번째 그룹에서 위젯 흐름 순서는 (3),(4),(5),(6),(7)입니다.
세 번째 그룹에서 위젯 흐름 순서는 (8),(9)입니다.
네 번째 그룹에서 위젯 흐름 순서는 (10),(11)입니다.
다섯 번째 그룹에서 위젯 흐름 순서는 (12)입니다.
6번째 그룹에서 위젯 흐름 순서는 (13)이다.
그룹화 패턴
상대 선택기(위젯 흐름 기반)
상대 선택기
별명
설명
:흐름
-
위젯 흐름의 위젯
:flowLabel
:상표
위젯 흐름의 레이블
:flowInput
:입력
위젯 흐름에 입력
:flowImage
:영상
위젯 흐름의 이미지
:flowButton
:단추
위젯 흐름의 버튼
:flowSwitch
:스위치
위젯 흐름 전환
:innerFlow
:안의
위젯 흐름의 내부 위젯
:innerLabel
-
위젯 흐름의 내부 레이블
:내부 입력
-
위젯 흐름의 내부 입력
:내부 이미지
-
위젯 흐름의 내부 이미지
:innerButton
-
위젯 흐름의 내부 버튼
:innerSwitch
-
위젯 흐름의 내부 스위치
:vflow
-
수직 위젯 흐름의 위젯
:innerVflow
:innerV
수직 위젯 흐름의 내부 위젯
:innerVlabel
-
수직 위젯 흐름의 내부 레이블
:innerVinput
-
수직 위젯 흐름의 내부 입력
:innerVimage
-
수직 위젯 흐름의 내부 이미지
:innerV버튼
-
수직 위젯 흐름의 내부 버튼
:innerVswitch
-
수직 위젯 흐름의 내부 스위치
상대 선택기 예
예시
설명
<text1>:input
텍스트가 "text1"인 첫 번째 요소를 선택한 다음 위젯 흐름에서 첫 번째 입력을 선택합니다.<.Class1>:flow(2)
유형이 Class1인 첫 번째 요소를 선택한 다음 위젯 흐름에서 두 번째 위젯을 선택합니다.재료
[ https://github.com/wave1008/shirates-samples-selectors ]에서 완전한 샘플 프로젝트를 얻을 수 있습니다.
SelectWithWidgetFlowTest
import org.junit.jupiter.api.Order
import org.junit.jupiter.api.Test
import shirates.core.driver.commandextension.classIs
import shirates.core.driver.commandextension.restartApp
import shirates.core.driver.commandextension.select
import shirates.core.driver.commandextension.textIs
import shirates.core.testcode.UITest
class SelectWithWidgetFlowTest : UITest() {
@Test
@Order(10)
fun selectWithWidgetFlow() {
scenario {
case(1) {
condition {
it.restartApp()
}.expectation {
it.select("<Settings>:flow")
.classIs("android.widget.ImageButton")
it.select("<Settings>:flow(2)")
.textIs("Search settings")
it.select("<Settings>:flow(3)")
.classIs("android.widget.ImageView")
it.select("<Settings>:flow(4)")
.textIs("Network & internet")
it.select("<Settings>:flow(5)")
.textIs("Mobile, Wi‑Fi, hotspot")
}
}
case(2) {
expectation {
it.select("<Settings>") {
// Select relatively from <Settings>
select(":flow").classIs("android.widget.ImageButton")
select(":flow(2)").textIs("Search settings")
select(":flow(3)").classIs("android.widget.ImageView")
select(":flow(4)").textIs("Network & internet")
select(":flow(5)").textIs("Mobile, Wi‑Fi, hotspot")
}
}
}
}
}
@Test
@Order(20)
fun selectWithWidgetFlow2() {
scenario {
case(1) {
condition {
it.restartApp()
}.expectation {
it.select("<Settings>") {
// Select relatively from <Settings>
select(":label").textIs("Search settings")
select(":label(2)").textIs("Network & internet")
select(":label(3)").textIs("Mobile, Wi‑Fi, hotspot")
}
}
}
case(2) {
expectation {
it.select("<Network & internet>") {
// Select relatively from <Network & internet>
select(":image").classIs("android.widget.ImageView")
select(":label").textIs("Mobile, Wi‑Fi, hotspot")
}
}
}
}
}
}
selectWithWidgetFlow/케이스(1),케이스(2)
selectWithWidgetFlow2/케이스(1)
selectWithWidgetFlow2/케이스(2)
검사 결과
HTML 보고서
자세한 내용은
참조Relative selector(Widget flow based)
결론
화면에서 요소를 선택하면 Shirates의 상대 선택기를 사용하여 상대적으로 요소 주위에 다른 요소를 가져올 수 있습니다.
위젯 흐름과 함께 상대적으로 위젯(입력, 레이블, 이미지, 버튼, 스위치)을 얻을 수 있습니다.
Reference
이 문제에 관하여(Shirates에서 상대 선택기를 사용하는 방법 - 2부 -), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/wave1008/how-to-use-relative-selector-in-shirates-part-2--1l8l텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)