当前位置: 首页 > article >正文

appium文本输入的多种形式

目录

一、send_keys方法

二、press_keycode方法

三、subprocess方法直接通过adb命令输入


一、send_keys方法

这个是最常用的方法,不过通常使用时要使用聚焦,也就是先点击后等待:

element = wait.until(EC.presence_of_element_located((By.XPATH,
                                                     r'//android.widget.EditText[@text="a"])')))
element.click()  # 获取焦点
element.send_keys("13488474661")  # 输入文本

但这种方式在处理某些输入框时,会报异常,类似这种,如果反复切换元素仍不能解决,就要考虑换方法了:

selenium.common.exceptions.InvalidElementStateException: Message: ACTION_SET_PROGRESS has failed on the element 'android.view.accessibility.AccessibilityNodeInfo@17c97; boundsInParent: Rect(0, 0 - 269, 36); boundsInScreen: Rect(201, 717 - 1008, 825); packageName: uni.UNIDCC1D16; className: android.widget.EditText; text: ; error: null; maxTextLength: -1; contentDescription: null; tooltipText: null; viewIdResName: null; checkable: false; checked: false; focusable: true; focused: true; selected: false; clickable: true; longClickable: false; contextClickable: false; enabled: true; password: false; scrollable: false; importantForAccessibility: false; visible: true; actions: [AccessibilityAction: ACTION_NEXT_HTML_ELEMENT - null, AccessibilityAction: ACTION_PREVIOUS_HTML_ELEMENT - null, AccessibilityAction: ACTION_SHOW_ON_SCREEN - null, AccessibilityAction: ACTION_CONTEXT_CLICK - null, AccessibilityAction: ACTION_SET_TEXT - null, AccessibilityAction: ACTION_PASTE - null, AccessibilityAction: ACTION_UNKNOWN - null, AccessibilityAction: ACTION_CLEAR_FOCUS - null, AccessibilityAction: ACTION_ACCESSIBILITY_FOCUS - null, AccessibilityAction: ACTION_CLICK - null, AccessibilityAction: ACTION_SET_PROGRESS - null]'. Did you interact with the correct element?
Stacktrace:

二、press_keycode方法

以下方法,可使输入框聚焦后直接输入即可,亦可以解决上面元素定位异常send_keys的问题:

            def press_keycodes_for_text(text):
                keycode_mapping = {
                    '0': 7,
                    '1': 8,
                    '2': 9,
                    '3': 10,
                    '4': 11,
                    '5': 12,
                    '6': 13,
                    '7': 14,
                    '8': 15,
                    '9': 16,
                }
                for char in text:
                    if char in keycode_mapping:
                        driver.press_keycode(keycode_mapping[char])


            # 输入示例
            press_keycodes_for_text("13488474661")

三、subprocess方法直接通过adb命令输入

引用subprocess包直接写入对应的内容即可,前提也是先聚焦文本框:

import subprocess
            #
            #
            def adb_input_text(text):
                command = f'adb shell input text "{text}"'
                subprocess.run(command, shell=True)


            # 调用示例
            adb_input_text("13488474661")


http://www.kler.cn/a/370270.html

相关文章:

  • 【Pandas】pandas Series groupby
  • Linux:进程(三)
  • 使用Chrome和Selenium实现对Superset等私域网站的截图
  • JupyterLab 安装以及部分相关配置
  • leetcode 面试经典 150 题:合并区间
  • 【KOA框架】koa框架基础及swagger接口文档搭建
  • 使用微信免费的内容安全识别接口,UGC场景开发检测违规内容功能
  • Claude 3.5新模型发布:Sonnet与Haiku双雄登场,助力开发者高效创作
  • python基础(类、实例、属性、方法)
  • vue3 中 props 使用 ts 类型定义复杂类型
  • SVN常用命令
  • Android 下载进度条HorizontalProgressView 基础版
  • Docker 部署MongoDb
  • 【网路原理】——HTTP状态码和Postman使用
  • 【Vscode】设置
  • Unity自定义数组在Inspector窗口的显示方式
  • 【10天速通Navigation2】(四) :ORB-SLAM3的ROS2 humble编译和配置
  • 如何在Linux系统中管理和优化Swap空间
  • 论文阅读工具:arXiv、papers.cool、txyz
  • antvG6如何实现节点动画、连线动画、切换节点图标
  • 网络安全的重要性及实践指南
  • Python语言实现刑事犯罪罪名判定算法
  • 大数据之Kafka
  • 简单的Python爬虫实例
  • Qt example---40000 Chips
  • XCode16中c++头文件找不到解决办法