Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
appium在emulator中自动测试Android应用程序的密码输入,但xml文件中缺少密码输入字段_Android_Passwords_Appium_Emulation - Fatal编程技术网

appium在emulator中自动测试Android应用程序的密码输入,但xml文件中缺少密码输入字段

appium在emulator中自动测试Android应用程序的密码输入,但xml文件中缺少密码输入字段,android,passwords,appium,emulation,Android,Passwords,Appium,Emulation,我正在使用appium desktop在android emulator(UI is)上记录android应用程序的密码(8个字符)输入函数,以了解如何编写python脚本来自动测试该函数。我无法确定要发送密钥以输入密码的元素(我在最后输入2个字符(总共8个字符)后附加了xml文件以供参考)。 我尝试选择最有可能的元素(例如:com.test.android.test:id/cb_1,cb_2,…)在appium desktop的inspect函数中发送以下错误: 调用“sendKeys”失败

我正在使用appium desktop在android emulator(UI is)上记录android应用程序的密码(8个字符)输入函数,以了解如何编写python脚本来自动测试该函数。我无法确定要发送密钥以输入密码的元素(我在最后输入2个字符(总共8个字符)后附加了xml文件以供参考)。 我尝试选择最有可能的元素(例如:com.test.android.test:id/cb_1,cb_2,…)在appium desktop的inspect函数中发送以下错误:

调用“sendKeys”失败 [element.sendKeys(“w”)]错误响应状态:12,InvalidElementState-无法完成元素命令,因为元素处于无效状态(例如,试图单击禁用的元素)。Selenium错误:无法将元素设置为“w”。您是否与正确的元素交互

我做了一些调查,发现在我输入了一个字符的密码后,相应的id/cb_1从“checked=false”变成了“checked=true”(在我输入了2个字符后,附加的xml文件是CATpure的,所以cb_1和cb_2的“checked=true”和其他(cb_n的“checked=false”),xml文件中没有任何其他更改,所以我的问题是如何编写python代码,为appium输入8个字符的密码,以自动化测试

有人能给我一些提示或建议让我继续前进吗?谢谢你的帮助!非常感谢你的建议

<?xml version='1.0' encoding='UTF-8' standalone='yes' ?>
<hierarchy index="0" class="hierarchy" rotation="3" width="900" height="1600">
  <android.widget.FrameLayout index="0" package="com.test.android.test" class="android.widget.FrameLayout" text="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" long-clickable="false" password="false" scrollable="false" selected="false" bounds="[0,0][900,1600]" displayed="true">
    <android.widget.LinearLayout index="0" package="com.test.android.test" class="android.widget.LinearLayout" text="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" long-clickable="false" password="false" scrollable="false" selected="false" bounds="[0,0][900,1600]" displayed="true">
      <android.widget.FrameLayout index="0" package="com.test.android.test" class="android.widget.FrameLayout" text="" resource-id="android:id/content" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" long-clickable="false" password="false" scrollable="false" selected="false" bounds="[0,0][900,1600]" displayed="true">
        <android.widget.RelativeLayout index="0" package="com.test.android.test" class="android.widget.RelativeLayout" text="" resource-id="com.test.android.test:id/root_view" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" long-clickable="false" password="false" scrollable="false" selected="false" bounds="[0,0][900,1600]" displayed="true">
          <android.widget.LinearLayout index="0" package="com.test.android.test" class="android.widget.LinearLayout" text="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" long-clickable="false" password="false" scrollable="false" selected="false" bounds="[0,48][900,604]" displayed="true">
            <android.widget.FrameLayout index="0" package="com.test.android.test" class="android.widget.FrameLayout" text="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" long-clickable="false" password="false" scrollable="false" selected="false" bounds="[0,48][900,118]" displayed="true">
              <android.widget.FrameLayout index="0" package="com.test.android.test" class="android.widget.FrameLayout" text="" resource-id="com.test.android.test:id/btn_close_area" checkable="false" checked="false" clickable="true" enabled="true" focusable="false" focused="false" long-clickable="false" password="false" scrollable="false" selected="false" bounds="[0,48][110,118]" displayed="true">
                <android.widget.ImageView index="0" package="com.test.android.test" class="android.widget.ImageView" text="" resource-id="com.test.android.test:id/btn_left" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" long-clickable="false" password="false" scrollable="false" selected="false" bounds="[30,61][74,105]" displayed="true" />
              </android.widget.FrameLayout>
            </android.widget.FrameLayout>
            <android.widget.LinearLayout index="1" package="com.test.android.test" class="android.widget.LinearLayout" text="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" long-clickable="false" password="false" scrollable="false" selected="false" bounds="[0,118][900,192]" displayed="true">
              <android.widget.TextView index="0" package="com.test.android.test" class="android.widget.TextView" text="your account will be locked if retrying password errors over 5 times" resource-id="com.test.android.test:id/hint" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" long-clickable="false" password="false" scrollable="false" selected="false" bounds="[0,118][900,192]" displayed="true" />
            </android.widget.LinearLayout>
            <android.widget.LinearLayout index="2" package="com.test.android.test" class="android.widget.LinearLayout" text="" resource-id="com.test.android.test:id/pwd_input_fl" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" long-clickable="false" password="false" scrollable="false" selected="false" bounds="[0,324][900,604]" displayed="true">
              <android.widget.RelativeLayout index="0" package="com.test.android.test" class="android.widget.RelativeLayout" text="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" long-clickable="false" password="false" scrollable="false" selected="false" bounds="[0,324][900,367]" displayed="true">
                <android.widget.TextView index="0" package="com.test.android.test" class="android.widget.TextView" text="pls input your password" resource-id="com.test.android.test:id/dialog_verify_password_title" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" long-clickable="false" password="false" scrollable="false" selected="false" bounds="[306,324][594,367]" displayed="true" />
              </android.widget.RelativeLayout>
              <android.widget.RelativeLayout index="1" package="com.test.android.test" class="android.widget.RelativeLayout" text="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" long-clickable="false" password="false" scrollable="false" selected="false" bounds="[0,427][900,511]" displayed="true">
                <android.widget.LinearLayout index="1" package="com.test.android.test" class="android.widget.LinearLayout" text="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" long-clickable="false" password="false" scrollable="false" selected="false" bounds="[24,427][876,511]" displayed="true">
                  <android.widget.FrameLayout index="0" package="com.test.android.test" class="android.widget.FrameLayout" text="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" long-clickable="false" password="false" scrollable="false" selected="false" bounds="[24,427][130,511]" displayed="true">
                    <android.widget.CheckBox index="0" package="com.test.android.test" class="android.widget.CheckBox" text="" resource-id="com.test.android.test:id/cb_1" checkable="true" checked="true" clickable="true" enabled="true" focusable="true" focused="false" long-clickable="false" password="false" scrollable="false" selected="false" bounds="[55,447][99,491]" displayed="true" />
                  </android.widget.FrameLayout>
                  <android.widget.FrameLayout index="1" package="com.test.android.test" class="android.widget.FrameLayout" text="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" long-clickable="false" password="false" scrollable="false" selected="false" bounds="[130,427][236,511]" displayed="true">
                    <android.widget.CheckBox index="0" package="com.test.android.test" class="android.widget.CheckBox" text="" resource-id="com.test.android.test:id/cb_2" checkable="true" checked="false" clickable="true" enabled="true" focusable="true" focused="false" long-clickable="false" password="false" scrollable="false" selected="false" bounds="[161,447][205,491]" displayed="true" />
                  </android.widget.FrameLayout>
                  <android.widget.FrameLayout index="2" package="com.test.android.test" class="android.widget.FrameLayout" text="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" long-clickable="false" password="false" scrollable="false" selected="false" bounds="[236,427][342,511]" displayed="true">
                    <android.widget.CheckBox index="0" package="com.test.android.test" class="android.widget.CheckBox" text="" resource-id="com.test.android.test:id/cb_3" checkable="true" checked="false" clickable="true" enabled="true" focusable="true" focused="false" long-clickable="false" password="false" scrollable="false" selected="false" bounds="[267,447][311,491]" displayed="true" />
                  </android.widget.FrameLayout>
                  <android.widget.FrameLayout index="3" package="com.test.android.test" class="android.widget.FrameLayout" text="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" long-clickable="false" password="false" scrollable="false" selected="false" bounds="[342,427][448,511]" displayed="true">
                    <android.widget.CheckBox index="0" package="com.test.android.test" class="android.widget.CheckBox" text="" resource-id="com.test.android.test:id/cb_4" checkable="true" checked="false" clickable="true" enabled="true" focusable="true" focused="false" long-clickable="false" password="false" scrollable="false" selected="false" bounds="[373,447][417,491]" displayed="true" />
                  </android.widget.FrameLayout>
                  <android.widget.FrameLayout index="4" package="com.test.android.test" class="android.widget.FrameLayout" text="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" long-clickable="false" password="false" scrollable="false" selected="false" bounds="[448,427][555,511]" displayed="true">
                    <android.widget.CheckBox index="0" package="com.test.android.test" class="android.widget.CheckBox" text="" resource-id="com.test.android.test:id/cb_5" checkable="true" checked="false" clickable="true" enabled="true" focusable="true" focused="false" long-clickable="false" password="false" scrollable="false" selected="false" bounds="[479,447][523,491]" displayed="true" />
                  </android.widget.FrameLayout>
                  <android.widget.FrameLayout index="5" package="com.test.android.test" class="android.widget.FrameLayout" text="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" long-clickable="false" password="false" scrollable="false" selected="false" bounds="[555,427][662,511]" displayed="true">
                    <android.widget.CheckBox index="0" package="com.test.android.test" class="android.widget.CheckBox" text="" resource-id="com.test.android.test:id/cb_6" checkable="true" checked="false" clickable="true" enabled="true" focusable="true" focused="false" long-clickable="false" password="false" scrollable="false" selected="false" bounds="[586,447][630,491]" displayed="true" />
                  </android.widget.FrameLayout>
                  <android.widget.FrameLayout index="6" package="com.test.android.test" class="android.widget.FrameLayout" text="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" long-clickable="false" password="false" scrollable="false" selected="false" bounds="[662,427][769,511]" displayed="true">
                    <android.widget.CheckBox index="0" package="com.test.android.test" class="android.widget.CheckBox" text="" resource-id="com.test.android.test:id/cb_7" checkable="true" checked="false" clickable="true" enabled="true" focusable="true" focused="false" long-clickable="false" password="false" scrollable="false" selected="false" bounds="[693,447][737,491]" displayed="true" />
                  </android.widget.FrameLayout>
                  <android.widget.FrameLayout index="7" package="com.test.android.test" class="android.widget.FrameLayout" text="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" long-clickable="false" password="false" scrollable="false" selected="false" bounds="[769,427][876,511]" displayed="true">
                    <android.widget.CheckBox index="0" package="com.test.android.test" class="android.widget.CheckBox" text="" resource-id="com.test.android.test:id/cb_8" checkable="true" checked="false" clickable="true" enabled="true" focusable="true" focused="false" long-clickable="false" password="false" scrollable="false" selected="false" bounds="[800,447][844,491]" displayed="true" />
                  </android.widget.FrameLayout>
                </android.widget.LinearLayout>
              </android.widget.RelativeLayout>
              <android.widget.TextView index="2" package="com.test.android.test" class="android.widget.TextView" text="forgot password?" resource-id="com.test.android.test:id/btn_forget_password" checkable="false" checked="false" clickable="true" enabled="true" focusable="false" focused="false" long-clickable="false" password="false" scrollable="false" selected="false" bounds="[0,571][900,604]" displayed="true" />
            </android.widget.LinearLayout>
          </android.widget.LinearLayout>
        </android.widget.RelativeLayout>
      </android.widget.FrameLayout>
    </android.widget.LinearLayout>
  </android.widget.FrameLayout>
</hierarchy>

正如我在这里看到的,这个应用程序的android开发人员使用复选框作为密码占位符,而不是输入。这是错误的,在实际生产中没有人这样做。 UiAutomator不允许您向复选框发送密钥


无论如何,如果这是测试的示例apk,请尝试
driver。将\u text(“password”)
设置为复选框的父元素(LinearLayout或FrameLayout)。如果失败,请致电应用程序开发人员

没有以代码格式添加XMLxml文件(以前的xml是以文本形式添加的,并且已被剪短),感谢您的帮助@谢谢!它失败了!!!写这篇文章的开发者退出了:(