[uiautomator篇] 找父親節點和其他兄弟節點


https://testerhome.com/topics/1250

 

Appium 【已解決】 UiSelector 如何根據節點定位到父節點 / 兄弟節點?

liqing380 · 發布於  2014年08月11日 · 最后由  liqing380 回復於  2014年08月12日 · 2019 次閱讀

結構如下:

 

 

String UiSelector="new UiSelector().className(\"android.widget.RelativeLayout\").childSelector(new UiSelector().className(\"android.widget.TextView\").text(\"Test郵件123xfm8c1o5\"))"; String xx=driver.findElementByAndroidUIAutomator(UiSelector).getText(); System.out.print("xx="+xx+"\n"); 

打印的是:Test222郵件123xfm8c1o5,也就是index為2的那個TextView節點。

問題:如何根據text是指定值的節點獲取它的兄弟節點?

比如根據text值是Test郵件123xfm8c1o5的那個節點獲取它的兄弟節點(index是0的那個textView)嘗試:

driver.findElementsByAndroidUIAutomator(UiSelector+".fromParent(\"android.widget.RelativeLayout\").childSelector(new UiSelector().className(\"android.widget.TextView\").text(\"xfm8c1o5_1@qa186.cn\"))" ); 

報錯:

org.openqa.selenium.WebDriverException: An unknown server-side error occurred while processing the command. (WARNING: The server did not provide any stacktrace information) 
共收到 12 條回復
1035
pajack · #1 · 2014年08月11日

可以試下 getFromParent().

1270

#1樓 @pajack getFromParent()的寫法是?

1035
pajack · #3 · 2014年08月11日

@liqing380
假設你已定義了一個節點 "Test郵件"
UiObject mail = new UiObject(new UiSelector().text("Test郵件"));
利用該節點找到其兄弟:
UiObject content = mail.getFromParent(new UiSelector().text("Text內容"));

這是UiAutomator 的寫法,在Appium 里要稍微變一下。

1270

#3樓 @pajack 
看了你的解答,瞬間明白fromParent的意思了,非常感謝。

driver.findElementByAndroidUIAutomator( "new UiSelector().text(\"Test222郵件123xfm8c1o5\").fromParent(new UiSelector().className(\"android.widget.TextView\").index(4))").getText(); 

這樣就可以根據text是指定值Test222郵件123xfm8c1o5的節點獲取到了它的兄弟節點(index是4的那個textView)了

1185
kuroky · #5 · 2014年08月12日

#4樓 @liqing380 給力

1058

學習!!

808
tom_ma · #7 · 2014年08月13日

學習~~

1401

#3樓 @pajack 你這種用法,不會提示中文亂碼嗎

1401

#4樓 @liqing380 UiObject mail = new UiObject(new UiSelector().text("Test郵件")); 你這種用法,不會提示中文亂碼嗎。

我試了下:運行用例時,提示:INSTRUMENTATION_STATUS: stack=com.android.uiautomator.core.UiObjectNotFoundException: UiSelector[TEXT=錕街伙拷錕絔

有什么解決辦法嗎

1401

#3樓 @pajack UiObject mail = new UiObject(new UiSelector().text("Test郵件")); 你這種用法,不會提示中文亂碼嗎。

我試了下:運行用例時,提示:INSTRUMENTATION_STATUS: stack=com.android.uiautomator.core.UiObjectNotFoundException: UiSelector[TEXT=錕街伙拷錕絔

有什么解決辦法嗎

1270

#10樓 @xiang2743 我這邊很正常,沒有亂碼呢

1401

不好意思,我找到原因了,是因為編碼的問題,改為UTF-8 就可以了

回帖
  • 請注意單詞拼寫,以及中英文排版,參考此頁
  • 支持 Markdown 格式, **粗體**、~~刪除線~~、`單行代碼`, 更多語法請見這里 Markdown 語法
  • 支持表情,使用方法請點擊☺
  • 上傳圖片, 支持拖拽和剪切板黏貼上傳, 格式限制 - jpg, png, gif
  • 發布框支持本地存儲功能,會在內容變更時保存,「提交」按鈕點擊時清空


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM