Shirates에서 선택자 표현식을 사용하는 방법
18010 단어 appiumiostestautomationandroid
선택기 표현식
Shirates Selector 표현식은 화면 요소를 필터링하는 표현식입니다.
select 함수는 선택자 표현식을 수락하고 구문 분석하며 요소를 검색 및 필터링하고 결과 요소를 반환합니다.
선택기 표현식은 하나 이상의 필터 표현식으로 구성됩니다.

필터 표현식
Shirates Filter 표현식은 화면 요소를 필터링하기 위한 조건을 기술하는 표현식입니다.
필터
공식적인
약어
안드로이드 속성
iOS 속성
텍스트
텍스트=텍스트1
텍스트 1
텍스트
상표
textStartsWith
textStartsWith=텍스트1
텍스트 1*
텍스트
상표
텍스트 포함
textContains=텍스트1
*텍스트 1*
텍스트
상표
textEndsWith
textEndsWith=텍스트1
*텍스트 1
텍스트
상표
textMatches
textMatches=^텍스트$
해당 없음
텍스트
상표
정확한
리터럴=리터럴1
'리터럴1'
텍스트
상표
ID
id=id1
#id1
리소스 ID
이름
입장
액세스=액세스1
@액세스1
내용 설명
이름
accessStartsWith
accessStartsWith=액세스1
@액세스1*
내용 설명
이름
액세스 포함
accessContains=액세스1
@*액세스1*
내용 설명
이름
accessEndsWith
accessEndsWith=액세스1
@*액세스1
내용 설명
이름
accessMatches
accessMatches=^액세스1$
해당 없음
내용 설명
이름
값
값=값1
해당 없음
텍스트
값
valueStartsWith
valueStartsWith=값1
해당 없음
텍스트
값
값 포함
값포함=값1
해당 없음
텍스트
값
valueEndsWith
valueEndsWith=값1
해당 없음
텍스트
값
값 일치
valueMatches=^value1$
해당 없음
텍스트
값
수업
클래스=클래스1
.class1
수업
유형
집중 가능
집중 가능=참
해당 없음
집중 가능
해당 없음
스크롤 가능
스크롤 가능=참
해당 없음
스크롤 가능
해당 없음
보이는
보이는=참
해당 없음
해당 없음
보이는
xpath
xpath=//*[@text='텍스트1']
해당 없음
(임의)
(임의)
위치
위치=2
[2]
해당 없음
해당 없음
유형 무시
ignoreTypes=클래스1,클래스2
해당 없음
수업
유형
영상
이미지=image1.png
이미지1.png
해당 없음
해당 없음
자세한 내용은
참조Selector expression
재료
[ https://github.com/wave1008/shirates-samples-selectors ]에서 완전한 샘플 프로젝트를 얻을 수 있습니다.
선택기테스트2
import org.junit.jupiter.api.Order
import org.junit.jupiter.api.Test
import shirates.core.driver.branchextension.emulator
import shirates.core.driver.branchextension.realDevice
import shirates.core.driver.commandextension.*
import shirates.core.testcode.UITest
class SelectTest2 : UITest() {
@Test
@Order(10)
fun selectByText() {
scenario {
case(1) {
condition {
it.restartApp()
}.action {
it.select("Network & internet")
}.expectation {
it.textIs("Network & internet")
}
}
case(2) {
action {
it.select("Network &*")
}.expectation {
it.textIs("Network & internet")
}
}
case(3) {
action {
it.select("*internet")
}.expectation {
it.textIs("Network & internet")
}
}
case(4) {
action {
it.select("textMatches=^Network & internet$")
}.expectation {
it.textIs("Network & internet")
}
}
case(5) {
action {
it.selectWithScrollDown("About phone||About emulated device")
}.expectation {
realDevice {
it.textIs("About phone")
}.emulator {
it.textIs("About emulated device")
}
}
}
}
}
@Test
@Order(20)
fun selectById() {
scenario {
case(1) {
condition {
it.restartApp()
}.action {
it.select("#search_action_bar_title")
}.expectation {
it.textIs("Search settings")
}
}
}
}
@Test
@Order(30)
fun selectByAccessibility() {
scenario {
case(1) {
condition {
it.restartApp()
.tap("Network & internet")
}.action {
it.select("@Network & internet")
}.expectation {
it.idIs("collapsing_toolbar")
}
}
}
}
@Test
@Order(40)
fun selectByClass() {
scenario {
case(1) {
condition {
it.restartApp()
}.action {
it.select(".android.widget.ImageButton")
}.expectation {
it.classIs("android.widget.ImageButton")
}
}
}
}
@Test
@Order(50)
fun selectByXpath() {
scenario {
case(1) {
condition {
it.restartApp()
}.action {
it.select("xpath=//*[@text='Search settings']")
}.expectation {
it.textIs("Search settings")
}
}
}
}
@Test
@Order(60)
fun selectByPos() {
scenario {
case(1) {
condition {
it.restartApp()
.tap("Battery")
}.action {
it.select("*Battery*&&[1]")
}.expectation {
it.textIs("Battery Usage")
}
}
case(2) {
action {
it.select("*Battery*&&[2]")
}.expectation {
it.textIs("Battery Saver")
}
}
case(3) {
action {
it.select("*Battery*&&[3]")
}.expectation {
it.textIs("Battery percentage")
}
}
}
}
}
검사 결과


결론
Shirates Selector 표현식은 화면에서 요소를 검색하기 위한 간단하면서도 강력한 표현식이며 XPath만큼 유연하지만 XPath보다 훨씬 쉽습니다.
Reference
이 문제에 관하여(Shirates에서 선택자 표현식을 사용하는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://dev.to/wave1008/how-to-use-selector-expression-in-shirates-2po4
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
import org.junit.jupiter.api.Order
import org.junit.jupiter.api.Test
import shirates.core.driver.branchextension.emulator
import shirates.core.driver.branchextension.realDevice
import shirates.core.driver.commandextension.*
import shirates.core.testcode.UITest
class SelectTest2 : UITest() {
@Test
@Order(10)
fun selectByText() {
scenario {
case(1) {
condition {
it.restartApp()
}.action {
it.select("Network & internet")
}.expectation {
it.textIs("Network & internet")
}
}
case(2) {
action {
it.select("Network &*")
}.expectation {
it.textIs("Network & internet")
}
}
case(3) {
action {
it.select("*internet")
}.expectation {
it.textIs("Network & internet")
}
}
case(4) {
action {
it.select("textMatches=^Network & internet$")
}.expectation {
it.textIs("Network & internet")
}
}
case(5) {
action {
it.selectWithScrollDown("About phone||About emulated device")
}.expectation {
realDevice {
it.textIs("About phone")
}.emulator {
it.textIs("About emulated device")
}
}
}
}
}
@Test
@Order(20)
fun selectById() {
scenario {
case(1) {
condition {
it.restartApp()
}.action {
it.select("#search_action_bar_title")
}.expectation {
it.textIs("Search settings")
}
}
}
}
@Test
@Order(30)
fun selectByAccessibility() {
scenario {
case(1) {
condition {
it.restartApp()
.tap("Network & internet")
}.action {
it.select("@Network & internet")
}.expectation {
it.idIs("collapsing_toolbar")
}
}
}
}
@Test
@Order(40)
fun selectByClass() {
scenario {
case(1) {
condition {
it.restartApp()
}.action {
it.select(".android.widget.ImageButton")
}.expectation {
it.classIs("android.widget.ImageButton")
}
}
}
}
@Test
@Order(50)
fun selectByXpath() {
scenario {
case(1) {
condition {
it.restartApp()
}.action {
it.select("xpath=//*[@text='Search settings']")
}.expectation {
it.textIs("Search settings")
}
}
}
}
@Test
@Order(60)
fun selectByPos() {
scenario {
case(1) {
condition {
it.restartApp()
.tap("Battery")
}.action {
it.select("*Battery*&&[1]")
}.expectation {
it.textIs("Battery Usage")
}
}
case(2) {
action {
it.select("*Battery*&&[2]")
}.expectation {
it.textIs("Battery Saver")
}
}
case(3) {
action {
it.select("*Battery*&&[3]")
}.expectation {
it.textIs("Battery percentage")
}
}
}
}
}
Reference
이 문제에 관하여(Shirates에서 선택자 표현식을 사용하는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/wave1008/how-to-use-selector-expression-in-shirates-2po4텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)