[content-description] find_element_by_accessibility_id 안 드 로 이 드 에서 의 상세 한 설명
17227 단어 appium
최근 에 Appium 이 새로운 걸 도 입 했 어 요.
find element
방법:python client
예 를 들다def find_element_by_accessibility_id(self, id):
"""Finds an element by accessibility id.
:Args:
- id - a string corresponding to a recursive element search using the
Id/Name that the native Accessibility options utilize
:Usage:
driver.find_element_by_accessibility_id()
"""
return self.find_element(by=By.ACCESSIBILITY_ID, value=id)
문서 에서 이렇게 말 했다.
Allows for elements to be found using the "Accessibility ID". The methods take a string representing the accessibility id or label attached to a given element, e.g., for iOS the accessibility identifier and for Android the content-description. Adds the methods
driver.find_element_by_accessibility_id
and find_elements_by_accessibility_id
. 'Accessibility ID'로 요 소 를 찾 을 수 있다 는 뜻 이다.iOS 의 경우 access bility identifier 입 니 다.Android 에 대해 서 는...
content-description
。 뭐 공부 해요?
content-description
네?공식 적 으로 는 이렇게 말 했다.
http://developer.android.com/training/accessibility/accessible-app.html Android has several accessibility-focused features baked into the platform, which make it easy to optimize your application for those with visual or physical disabilities. However, it's not always obvious what the correct optimizations are, or the easiest way to leverage the framework toward this purpose. This lesson shows you how to implement the strategies and platform features that make for a great accessibility-enabled Android application.
이 속성 은 주로 장애인 을 위 한 것 으로 프로그램 을 사용 할 수 있 도록 준비 되 어 있 기 때문에 이 경고 앞 에[Accessbility]가 있 습 니 다.
예 를 들 면,예 를 들 면,너 에 게 는
ImageView
그림 을 한 장 놓 으 면 이 그림 은 많은 물체 와 색깔,색 이 약 하거나 색맹 이 있 는 사람들 을 포함 할 수 있 습 니 다.그들 은 이 그림 이 도대체 무엇 을 그 렸 는 지 분간 할 수 없 기 때문에 이 럴 때 contentDescription
효과 가 있 을 겁 니 다.예 를 들 어 Android 의 일부 프로그램 은 사용자 에 게 이 그림 이 무엇 을 그 렸 는 지 소리 로 알려 줄 수 있 습 니 다.그들 이 읽 은 것 은 바로 당신 입 니 다. contentDescription
라 는 내용 을 담 았 다.이 건 사실 iOS 랑...
accessibility identifier
같은 거 야.contentDescription 이 필요 한 컨트롤 에 contentDescription 을 추가 하 는 것 은 좋 은 프로 그래 밍 습관 입 니 다.사실 ADT 의 Lint 검 측 도 알려 줍 니 다.
[Accessibility] Missing contentDescription attribute on image
그 러 니까 컨트롤 에
android:contentDescription="@string/desc
이렇게 하면 Appium 이 위 치 를 정할 수 있다.어떻게 android:contentDescription 을 추 가 했 는 지 판단 합 니까?
첫 번 째 방법 은 컨트롤 의 xml 에 android:contentDescription 속성 을 추 가 했 는 지 확인 합 니 다.
두 번 째,코드 보기,
myView.setContentDescription(desc);
세 번 째,Hierarchy Viewer 사용appium sample-code 에 있 는 androidcoplex.py 는 실제로 써 야 돼 요. https://github.com/appium/android-apidemos 이 프로젝트 는 apk 를 내 보 내 서 테스트 합 니 다. def test_find_elements(self):
# pause a moment, so xml generation can occur
sleep(2)
els = self.driver.find_elements_by_xpath('//android.widget.TextView')
self.assertEqual('API Demos', els[0].text)
el = self.driver.find_element_by_xpath('//android.widget.TextView[contains(@text, "Animat")]')
self.assertEqual('Animation', el.text)
el = self.driver.find_element_by_accessibility_id("App")
el.click()
els = self.driver.find_elements_by_android_uiautomator('new UiSelector().clickable(true)')
# there are more, but at least 10 visible
self.assertLess(10, len(els))
# the list includes 2 before the main visible elements
self.assertEqual('Action Bar', els[2].text)
els = self.driver.find_elements_by_xpath('//android.widget.TextView')
self.assertLess(10, len(els))
self.assertEqual('Action Bar', els[1].text)
기타
genymotion 을 사용 해 보 았 습 니 다.아주 좋 습 니 다.Appium 실험 을 하 는 것 이 좋 습 니 다.
시 뮬 레이 터 를 사용 할 때 문제 가 발생 했 습 니 다.
java.lang.IllegalArgumentException: eglChooseConfig failed EGL_NOT_INITIALIZED
03-29 13:21:34.556: E/AndroidRuntime(4458): FATAL EXCEPTION: main
03-29 13:21:34.556: E/AndroidRuntime(4458): Process: com.example.news, PID: 4458
03-29 13:21:34.556: E/AndroidRuntime(4458): java.lang.IllegalArgumentException: eglChooseConfig failed EGL_NOT_INITIALIZED
03-29 13:21:34.556: E/AndroidRuntime(4458): at android.view.HardwareRenderer$GlRenderer.chooseEglConfig(HardwareRenderer.java:1173)
03-29 13:21:34.556: E/AndroidRuntime(4458): at android.view.HardwareRenderer$GlRenderer.loadEglConfig(HardwareRenderer.java:1135)
03-29 13:21:34.556: E/AndroidRuntime(4458): at android.view.HardwareRenderer$GlRenderer.initializeEgl(HardwareRenderer.java:1117)
03-29 13:21:34.556: E/AndroidRuntime(4458): at android.view.HardwareRenderer$GlRenderer.initialize(HardwareRenderer.java:1057)
03-29 13:21:34.556: E/AndroidRuntime(4458): at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1550)
03-29 13:21:34.556: E/AndroidRuntime(4458): at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1000)
03-29 13:21:34.556: E/AndroidRuntime(4458): at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:5670)
03-29 13:21:34.556: E/AndroidRuntime(4458): at android.view.Choreographer$CallbackRecord.run(Choreographer.java:761)
03-29 13:21:34.556: E/AndroidRuntime(4458): at android.view.Choreographer.doCallbacks(Choreographer.java:574)
03-29 13:21:34.556: E/AndroidRuntime(4458): at android.view.Choreographer.doFrame(Choreographer.java:544)
03-29 13:21:34.556: E/AndroidRuntime(4458): at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:747)
03-29 13:21:34.556: E/AndroidRuntime(4458): at android.os.Handler.handleCallback(Handler.java:733)
03-29 13:21:34.556: E/AndroidRuntime(4458): at android.os.Handler.dispatchMessage(Handler.java:95)
03-29 13:21:34.556: E/AndroidRuntime(4458): at android.os.Looper.loop(Looper.java:136)
03-29 13:21:34.556: E/AndroidRuntime(4458): at android.app.ActivityThread.main(ActivityThread.java:5017)
03-29 13:21:34.556: E/AndroidRuntime(4458): at java.lang.reflect.Method.invokeNative(Native Method)
03-29 13:21:34.556: E/AndroidRuntime(4458): at java.lang.reflect.Method.invoke(Method.java:515)
03-29 13:21:34.556: E/AndroidRuntime(4458): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
03-29 13:21:34.556: E/AndroidRuntime(4458): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
03-29 13:21:34.556: E/AndroidRuntime(4458): at dalvik.system.NativeStart.main(Native Method)
Google 은 Opengl es 와 연결 되 었 습 니 다.이것 은 제 가 사용 하 는 문제 가 아니 라 는 것 을 알 게 되 었 습 니 다.마지막 으로 시 뮬 레이 터 의 문 제 를 찾 아 재 부팅 한 후에 문 제 를 해결 할 수 있 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Appium desktop 인스펙터를 에뮬레이터에서 사용할 때까지의 각서 (Android 앱)환경에 대한 자세한 내용은 시작한다. appium을 시작하고 서버를 시작한 후 오른쪽 상단의 start inspector session을 클릭하십시오. 이런 화면이 나오므로, desired capabilities 를...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.