首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >appium在模拟器中自动测试Android应用的密码输入,但xml文件中缺少密码输入字段

appium在模拟器中自动测试Android应用的密码输入,但xml文件中缺少密码输入字段
EN

Stack Overflow用户
提问于 2020-09-15 14:04:05
回答 1查看 108关注 0票数 0

我正在使用appium桌面记录一个安卓应用程序在安卓模拟器(UI是UI)上的密码(8个字符)输入函数,以弄清楚如何编写python脚本来自动测试这个函数。我不知道为了输入密码需要发送密钥的元素是什么(我在最后输入了2个字符的密码(共8个字符)后附加了xml文件,供您参考)。我尝试选择最可能的元素(例如测试:id/cb_1,cb_2,...)要向密钥发送appium-desktop的inspect功能中的以下错误:

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

我做了一些调查,发现在我输入一个字符的密码后,相应的id/cb_1从‘checked=false’变成了'checked=true‘(附件中的xml文件是我输入2个字符后生成的,所以cb_1和cb_2的'checked=true’和其他人(Cb_n)的'checked=false'),在xml file.So中没有其他变化。我的问题是,我应该如何编写输入8个字符的密码的python代码,以使应用程序自动化测试。

有没有人能给我一些提示或建议,让我继续前进?谢谢你的帮忙!我们非常感谢您的建议!

代码语言:javascript
复制
<?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>
EN

回答 1

Stack Overflow用户

发布于 2020-09-16 20:15:25

正如我在这里看到的,这个应用程序的安卓开发者使用checkBox作为密码占位符,而不是输入。这是错误的,在实际生产中没有人这样做。而且UiAutomator不会让你sendKeys到一个复选框。

无论如何,如果这是用于测试的示例apk,请尝试driver.set_text("password")到复选框的父元素(LinearLayout或FrameLayout)。如果失败,请联系应用程序开发人员!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63896018

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档