使用appium测试React native

时间:2016-05-18 04:08:19

标签: ruby react-native appium

我用ruby对appium进行了sript测试:

require 'rubygems'
require 'appium_lib'
require 'selenium-webdriver'

capabilities = {
    'appium-version': '1.0',
    'platformName': 'Android',
    'platformVersion': '4.4',
    'deviceName': 'TestAppium',
    'app': '/Users/AwesomeProject/android/app/build/outputs/apk/app-debug.apk',
}

server_url = "http://0.0.0.0:4723/wd/hub"

Appium::Driver.new(caps: capabilities).start_driver
Appium.promote_appium_methods Object

find_element(:xpath, "//android.widget.LinearLayout[1]/android.widget.FrameLayout[1]/android.widget.FrameLayout[1]/android.view.ViewGroup[1]/android.widget.EditText[1]").send_keys "hello world"
back
 find_element(:xpath, "//android.widget.LinearLayout[1]/android.widget.FrameLayout[1]/android.widget.FrameLayout[1]/android.view.ViewGroup[1]/android.widget.EditText[1]").send_keys "hello world"

driver_quit

返回的结果是:

{ 
   "status": 7,
   "value": "Could not find element using supplied strategy."
}

我的问题是:

  1. 为什么我无法使用提供的策略找到元素?

  2. 没有" id" TextInput React Native Component的属性。我可以为TextInput React Native Component找到id的元素吗?

2 个答案:

答案 0 :(得分:0)

  1. 您可以更改以下代码并尝试:

    mobileElement = find_element(:xpath, '//android.widget.LinearLayout[1]/android.widget.FrameLayout[1]/android.widget.FrameLayout[1]/android.view.ViewGroup[1]/android.widget.EditText[1]');
    mobileElement.send_keys "hello world";
    
  2. 我发现可以使用的本机组件的其他可能属性是元素的classcss。您可以使用 chrome://inspect/#devices 找到这些内容并检查这些元素。

  3. 注意 :要添加它,即使我一直在寻找问题的适当答案(也添加了赏金):Accessing React Elements using Appium for Automation < / p>

答案 1 :(得分:0)

基于此链接:https://github.com/facebook/react-native/issues/7135

此问题的解决方法:在您的视图上使用accessible和accessibleLabel

可访问性标签上的DOC:https://facebook.github.io/react-native/docs/accessibility.html#accessibilitylabel-ios-android

在我的反应组件上:

<TextInput accessible={true} accessibilityLabel={Tap Me}></TextInput>

在我的脚本上测试:

mobileElement = find_Element(accessibilty_id, "Tap Me")
mobileElement.send_keys "hello world"