Appium Android测试-发送键最终出现InvalidElementStateException:无法将元素设置为'[email protected]'

问题描述 投票:0回答:1

我正在使用Appium编写Android的UI测试。我在测试方法的第一页上单击一个按钮,然后导航到下一个屏幕。下面是导航页面的屏幕截图。Login page和用于测试“登录”页面的测试代码如下。

//访问登录页面元素

      WebElement email =  wait.until(ExpectedConditions.presenceOfElementLocated(MobileBy.id("email_login")));

      email.sendKeys("[email protected]");

      WebElement login_submit =  driver.findElement(MobileBy.id("EmailLoginButton"));
    login_submit.click();

当我通过在本地运行Appium服务器在模拟器中运行用IntelliJ编写的测试用例时,我的测试用例失败,并显示以下消息。

org.openqa.selenium.InvalidElementStateException:io.appium.uiautomator2.common.exceptions.InvalidElementStateException:无法将元素设置为'[email protected]'。您是否与正确的元素进行了互动?

根据上面编写的测试,我确实使用wait.until方法来等待ID为“ email_login”的元素,然后使用send键设置该字段,但是一旦执行“ email,它就会以上述错误消息结束.sendKeys(“ [email protected]”);“代码段。但是我能够使用其他命令,例如email.getText()来读取字段中的内容。我还通过在找到元素并且页面源如下所示后捕获页面源来验证该元素是否存在。

<hierarchy index="0" class="hierarchy" rotation="0" width="1440" height="2712">
  <android.widget.FrameLayout index="0" package="com.sitrion.one" 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][1440,2712]" displayed="true">
    <android.widget.LinearLayout index="0" package="com.sitrion.one" 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][1440,2712]" displayed="true">
      <android.widget.FrameLayout index="0" package="com.sitrion.one" 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,84][1440,2712]" displayed="true">
        <android.widget.LinearLayout index="0" package="com.sitrion.one" class="android.widget.LinearLayout" text="" resource-id="com.sitrion.one:id/action_bar_root" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" long-clickable="false" password="false" scrollable="false" selected="false" bounds="[0,84][1440,2712]" displayed="true">
          <android.widget.FrameLayout index="0" package="com.sitrion.one" 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,84][1440,2712]" displayed="true">
            <android.widget.FrameLayout index="0" package="com.sitrion.one" class="android.widget.FrameLayout" text="" resource-id="com.sitrion.one:id/main_login_container" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" long-clickable="false" password="false" scrollable="false" selected="false" bounds="[0,84][1440,2712]" displayed="true">
              <android.widget.ScrollView index="0" package="com.sitrion.one" class="android.widget.ScrollView" text="" checkable="false" checked="false" clickable="false" enabled="true" focusable="true" focused="false" long-clickable="false" password="false" scrollable="false" selected="false" bounds="[0,84][1440,2712]" displayed="true">
                <android.widget.LinearLayout index="0" package="com.sitrion.one" 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,84][1440,1911]" displayed="true">
                  <android.widget.ImageView index="0" package="com.sitrion.one" class="android.widget.ImageView" text="" resource-id="com.sitrion.one:id/logo" checkable="false" checked="false" clickable="true" enabled="true" focusable="true" focused="false" long-clickable="true" password="false" scrollable="false" selected="false" bounds="[282,84][1157,1134]" displayed="true" />
                  <android.widget.TextView index="1" package="com.sitrion.one" class="android.widget.TextView" text="Please enter your corporate username." resource-id="com.sitrion.one:id/login_description" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" long-clickable="false" password="false" scrollable="false" selected="false" bounds="[0,1152][1440,1214]" displayed="true" />
                  <android.widget.EditText index="2" package="com.sitrion.one" class="android.widget.EditText" text="e.g. [email protected]" resource-id="com.sitrion.one:id/email_login" checkable="false" checked="false" clickable="true" enabled="false" focusable="true" focused="false" long-clickable="true" password="false" scrollable="false" selected="false" bounds="[0,1232][1440,1400]" displayed="true" />
                  <android.widget.Button index="3" package="com.sitrion.one" class="android.widget.Button" text="Submit" resource-id="com.sitrion.one:id/EmailLoginButton" checkable="false" checked="false" clickable="true" enabled="true" focusable="true" focused="false" long-clickable="false" password="false" scrollable="false" selected="false" bounds="[35,1435][1405,1603]" displayed="true" />
                  <android.widget.TextView index="4" package="com.sitrion.one" class="android.widget.TextView" text="By submitting your email address, you agree to the Limeade ONE privacy policy." resource-id="com.sitrion.one:id/txtPrivacyPolicy" checkable="false" checked="false" clickable="true" enabled="true" focusable="true" focused="false" long-clickable="true" password="false" scrollable="false" selected="false" bounds="[70,1708][1370,1841]" displayed="true" />
                </android.widget.LinearLayout>
              </android.widget.ScrollView>
              <android.widget.FrameLayout index="1" package="com.sitrion.one" class="android.widget.FrameLayout" text="" resource-id="com.sitrion.one:id/fragmentContainer" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" long-clickable="false" password="false" scrollable="false" selected="false" bounds="[0,84][1440,2712]" displayed="true">
                <android.widget.LinearLayout index="0" package="com.sitrion.one" class="android.widget.LinearLayout" text="" checkable="false" checked="false" clickable="true" enabled="true" focusable="true" focused="false" long-clickable="false" password="false" scrollable="false" selected="false" bounds="[0,84][1440,2712]" displayed="true">
                  <android.widget.ImageView index="0" package="com.sitrion.one" class="android.widget.ImageView" text="" checkable="false" checked="false" clickable="true" enabled="true" focusable="true" focused="false" long-clickable="false" password="false" scrollable="false" selected="false" bounds="[0,84][1440,609]" displayed="true" />
                  <android.widget.TextView index="1" package="com.sitrion.one" class="android.widget.TextView" text="Get Started" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" long-clickable="false" password="false" scrollable="false" selected="false" bounds="[0,609][1440,773]" displayed="true" />
                  <android.widget.TextView index="2" package="com.sitrion.one" class="android.widget.TextView" text="Enter the program code supplied by your employer to continue:" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" long-clickable="false" password="false" scrollable="false" selected="false" bounds="[35,808][1405,1047]" displayed="true" />
                  <android.widget.LinearLayout index="3" package="com.sitrion.one" class="android.widget.LinearLayout" text="" checkable="false" checked="false" clickable="true" enabled="true" focusable="true" focused="false" long-clickable="false" password="false" scrollable="false" selected="false" bounds="[0,1082][1440,1237]" displayed="true">
                    <android.widget.ImageButton index="0" package="com.sitrion.one" class="android.widget.ImageButton" text="" resource-id="com.sitrion.one:id/submit_programcode" checkable="false" checked="false" clickable="true" enabled="false" focusable="true" focused="false" long-clickable="false" password="false" scrollable="false" selected="false" bounds="[1198,1082][1405,1237]" displayed="true" />
                    <android.widget.EditText index="1" package="com.sitrion.one" class="android.widget.EditText" text="changemaker" resource-id="com.sitrion.one:id/edittext_programcode" checkable="false" checked="false" clickable="true" enabled="false" focusable="true" focused="false" long-clickable="true" password="false" scrollable="false" selected="false" bounds="[35,1082][1198,1237]" displayed="true" />
                  </android.widget.LinearLayout>
                  <android.widget.TextView index="4" package="com.sitrion.one" class="android.widget.TextView" text="Don't have a code?" checkable="false" checked="false" clickable="true" enabled="true" focusable="true" focused="false" long-clickable="false" password="false" scrollable="false" selected="false" bounds="[0,1237][1440,1364]" displayed="true" />
                </android.widget.LinearLayout>
              </android.widget.FrameLayout>
            </android.widget.FrameLayout>
          </android.widget.FrameLayout>
        </android.widget.LinearLayout>
      </android.widget.FrameLayout>
    </android.widget.LinearLayout>
  </android.widget.FrameLayout>
</hierarchy>

如果您检查上面的页面源,您会注意到email_login的元素确实存在,但是当我通过测试对其进行设置时,我得到了上面的错误。

但是,当我通过Appium服务器启动会话并使用appium页面检查器与视图进行交互时,我可以将ID为“ email_login”的编辑字段设置为它完全接受。

我还注意到,如果我在带有断点的调试模式下运行测试,则该字段将设置为没有任何问题。

我还注意到登录页面没有显示,并且在运行测试时从首页到登录页面的导航似乎都无法正常工作。

这里有什么问题的指针。我的页面包含片段,而登录页面是片段。 Appium是否存在编写片段测试的问题?

我正在使用Mac,并从https://github.com/appium/appium-desktop/releases/tag/v1.13.0链接中安装了appium桌面

java android appium ui-automation appium-android
1个回答
-1
投票

Estou com o mesmo erro,enãoachosolução:(

© www.soinside.com 2019 - 2024. All rights reserved.