如何在 Android Espresso Kakao 测试中单击 webview 按钮

Posted

技术标签:

【中文标题】如何在 Android Espresso Kakao 测试中单击 webview 按钮【英文标题】:How to click on webview button in Android Esspresso Kakao test 【发布时间】:2021-12-12 03:20:22 【问题描述】:

我的 android 应用程序外部有一个 html 表单,其中部分如下所示:

<form action="https://cards-accept.bm.pl/secure_back/play/AW2E8CY8ZG" method="POST"><div class="form-row"><label for="PaRes" data-trans="PaRes"></label><div class="form-field"><textarea id="PaRes" name="PaRes" rows="10" cols="54">&lt;dummy pareq&gt;</textarea></div></div><div class="form-row"><label for="MD">MD</label><div class="form-field"><input type="text" name="MD" id="MD" value="29cdce57-e7a1-475f-8243-b141bb2e162f" autocomplete="off"></div></div><div class="tac"><button type="submit" class="btn dark"><span>SUBMIT</span></button></div></form>

我需要在我的测试中点击按钮提交。 我试图通过这段代码来实现这一点,但失败了:

      onScreen<MyScreen> 
            webView 
                withElement(Locator.CLASS_NAME, "btn dark") 
                    click()
                
            
        

我有一个例外如下:

java.lang.RuntimeException: java.lang.RuntimeException: Error in evaluationEvaluation: status: 32 value: message=Compound class names not permitted hasMessage: true message: Compound class names not permitted

有没有办法以另一种方式点击提交按钮?

【问题讨论】:

【参考方案1】:

不允许在类名中使用空格。空格用于将多个类分配给单个元素。

像这样更改按钮类名称:

<button type="submit" class="btn_dark">

和这个的java代码:

  onScreen<MyScreen> 
            webView 
                withElement(Locator.CLASS_NAME, "btn_dark") 
                    click()
                
            
        

【讨论】:

但我无法在 html 中更改我的类名...这在我的 android 应用程序之外 尝试获取按钮本身而不是 CLASS_NAME 或者获取类作为属性(我不知道是否有任何属性选择器?)【参考方案2】:

解决我的问题是使用TAG_NAME,幸运的是,我在这个html中只有一个button标签

     onScreen<MyScreen> 
            webView 
                withElement(Locator.TAG_NAME, "button") 
                    click()
                
            
        

【讨论】:

以上是关于如何在 Android Espresso Kakao 测试中单击 webview 按钮的主要内容,如果未能解决你的问题,请参考以下文章

java 在Android测试中如何使用espresso-intents的示例

如何在 Android Espresso Kakao 测试中单击 webview 按钮

如何使用 Espresso 测试特定活动?

Android Marshmallow:使用 Espresso 测试权限?

如何在aws设备场中为android espresso每次测试运行后清除设备数据

Android Studio 2.2 中的 Espresso 测试录制功能