2017-01-04 49 views
4

我試圖(太長時間...)得到appium與反應原生工作,但似乎無法找到任何元素。React native + Appium,如何找到一個元素

我正在使用模擬器,Nexus 6,Android 6.0,Ubuntu,Appium 1.6.0,RN 0.39.2。

我試圖獲得最基本的例子的工作:

// foo.js 
render() { 
    return (
    <Text>foo</Text> 
) 
} 

// spec.js 
// ... some setup ... 
     driver 
     .elementByAccessibilityId('foo') 
      .click() 

和我越來越...

 1) should be able to find 'Buttons' and click it 


    0 passing (13s) 
    1 failing 

    1) Android find and click should be able to find 'Buttons' and click it: 
    Error: [elementByAccessibilityId("foo")] Error response status: 7, , NoSuchElement - An element could not be located on the page using the given search parameters. Selenium error: An element could not be located on the page using the given search parameters. 

我也試着設置: <Text accessible accessibilityLabel={ 'foo' }>foo</Text>

同樣的迴應...

有什麼想法嗎?

+0

你會怎麼做,如果你有一個React-Native slideOutMenu,你想點擊其中一個slideOutMenu選項。特別是當滑出菜單僅覆蓋其後面50%的屏幕時。 XCODE的AccessibilityInspector會看到滑出菜單,但android和ios的appium accessibilty inspector甚至不會看到滑出菜單。 – duncwa

回答

1

我結束了使用此解決方案:

<Text accessibilityLabel={ 'FOO' } testID={ 'FOO' }>some stuff here</Text> 

,然後在測試:

driver 
    .elementByAccessibilityId('FOO') 

幸得@jonesdar指出了這一點here

+0

設置accessibilityLabel可與Android模擬器配合使用。但在連接USB的真實設備上無法找到元素(已部署發佈版本) – sytolk

0

嘗試在文本上設置testID={'foo'}並使用.elementByName('foo'),不知道這是否仍然有效,但值得一試。

+1

不起作用,錯誤:[elementByName(「foo」)]錯誤響應狀態:32,,InvalidSelector - 參數是無效的選擇器(例如XPath/CSS)。硒錯誤:此會話不支持定位器策略「名稱」 – goldylucks