我用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."
}
我的问题是:
为什么我无法使用提供的策略找到元素?
没有" id" TextInput React Native Component的属性。我可以为TextInput React Native Component找到id的元素吗?
答案 0 :(得分:0)
您可以更改以下代码并尝试:
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";
我发现可以使用的本机组件的其他可能属性是元素的class
和css
。您可以使用 chrome://inspect/#devices
找到这些内容并检查这些元素。
注意 :要添加它,即使我一直在寻找问题的适当答案(也添加了赏金):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"