मैं एक ui तत्व के मूल दृश्य की पहचान करने की कोशिश कर रहा हूं ताकि मैं यूआई के माध्यम से स्वतंत्र रूप से नेविगेट कर सकूं।uiautomator का उपयोग करके मैं दृश्य के माता-पिता को कैसे प्राप्त कर सकता हूं?
उदाहरण के लिए, सेटिंग ऐप्स में, मैं पाठ "ब्लूटूथ" के साथ दृश्य पा सकते हैं:
UiObject btView = new UiObject(new UiSelector().text("Bluetooth"));
अब, हिस्सा है जहाँ मैं अटक जाते हैं यह एक है: मैं दो स्तरों तक नेविगेट करना चाहते हैं और चालू/बंद बटन के लिए एक नई खोज शुरू करें जो ब्लूटूथ को सक्षम और अक्षम करता है।
नोट: यदि मैं नीचे दिए गए कोड का उपयोग करता हूं तो मैं बटन प्राप्त कर सकता हूं।
UiObject btButtonView = new UiObject(new UiSelector().className("android.widget.Switch").instance(1));
यह स्विच बटन के लिए खोज करता है और दूसरा मुठभेड़ देता है। मैं चाहता हूं कि खोज अधिक सटीक हो और रैखिक लेआउट में बटन ढूंढें जिसमें "ब्लूटूथ" टेक्स्ट शामिल है। > आप सीधे ब्लूटूथ के लिए खोज सकते हैं -
LinearLayout
LinearLayout
ImageView
RelativeLayout
TextView (with text = "Bluetooth")
Switch()
यह विधि या तो काम नहीं करती है। UiObject दो स्तर ऊपर एक LinearLayout है, लेकिन इसमें टेक्स्ट विशेषता नहीं है। इसलिए मैं इसे "ब्लूटूथ" टेक्स्ट से नहीं पहचान सकता। ऐप के वास्तविक लेआउट के साथ प्रश्न अपडेट किया गया। –
यह काम करता है। आप LinearLayout के पाठ से पहचान नहीं करते हैं। "यह बच्चे से मिलने वाले किसी भी बच्चे की तलाश करता है, जिसमें मानक उप तर्क है जिसमें बच्चे के यूआई तत्व को अपने उप पदानुक्रम के भीतर कहीं भी टेक्स्ट टेक्स्ट के बराबर टेक्स्ट विशेषता है।" दूसरे शब्दों में, आप एक लीनियरलाउट की तलाश करते हैं जिसमें टेक्स्ट ब्लूटूथ वाला बच्चा होता है। – Anders
हां, यह काम करता है। ऐसा लगता है कि मैंने पहली बार कुछ गलत किया था। –