You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Kaspresso框架下如何在WebView输入框中输入文本?

WebView输入框定位及输入失败问题解决

问题背景

需在WebView的输入框中输入文本(截图:WebView输入框),尝试多种方法均未成功:

  1. ID定位失败
    代码:

    val numberCard = UiEditText {
        withId("", "pan")
    }
    

    错误:

    com.kaspersky.components.kautomator.intercept.exception.UnfoundedUiObjectException: The UiObject2 was not found on the screen. The selector=BySelector [RES='\Q:id/pan\E'], index=0

  2. 文本定位标签但无法输入
    代码:

    val numberCard = UiEditText {
        withText("text_label")
    }
    

    可定位到元素,但无法执行输入操作。

  3. WebView+键盘输入超时
    代码:

    onWebView()
        .forceJavascriptEnabled()
        .withElement(findElement(Locator.ID, "pan"))
        .perform(webClick())
    device.keyboard.typeText("555")
    

    错误(翻译后):

    com.kaspersky.kaspresso.internal.exceptions.AdbServerException: AdbServer执行命令input text 5时超时。

可行解决方案

1. 直接通过WebView API设置文本

无需依赖系统键盘,使用Kautomator的webSetText方法直接给WebView元素赋值:

onWebView()
    .forceJavascriptEnabled()
    .withElement(findElement(Locator.ID, "pan"))
    .perform(webSetText("555"))

2. 等待WebView加载完成

页面未加载完全会导致元素定位失败,添加加载等待:

onWebView()
    .forceJavascriptEnabled()
    .waitForWebPageLoad()
    .withElement(findElement(Locator.ID, "pan"))
    .perform(webSetText("555"))

3. 验证WebView元素ID准确性

通过Chrome DevTools(chrome://inspect)连接设备,查看WebView的DOM结构,确认输入框的实际ID是否为pan,避免ID定位错误。

4. 处理焦点与超时问题(若需使用键盘)

若必须用系统键盘输入,确保元素获取焦点后再执行输入,添加短时间等待:

onWebView()
    .forceJavascriptEnabled()
    .withElement(findElement(Locator.ID, "pan"))
    .perform(webClick())

// 等待焦点稳定,可替换为Kautomator的等待API
Thread.sleep(1000)
device.keyboard.typeText("555")

内容的提问来源于stack exchange,提问作者Red Cape

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 03:13:15