appium中常见的几种点击方式

首先从appium库里面导入webdriver,然后webdriver.Remote()声明driver对象。
想要使用TouchAction,必须要创建TouchAction对象,通过对象调用想要执行的手势,通过perform()执行动作。

#导入TouchAction
from appium.webdriver.common.touch_action import TouchAction

1、最常见的点击方式click()方法 。

driver.find_element_by_id("com.android.settings:id/search").click()

2、手指轻敲屏幕操作tap()方法。
tap(element,x,y)可以通过元素定位的方式敲击,也可以通过元素坐标的方式。

# 通过元素定位方式敲击屏幕
el = driver.find_element_by_xpath("//*[contains(@text,'WLAN')]")
TouchAction(driver).tap(el).perform()
#perform()方法发送命令到服务器执行操作
# 通过坐标方式敲击屏幕,元素坐标:x=149,y=324
TouchAction(driver).tap(x=149,y=324).perform()

3、手指按下操作press()方法。
press(elemnet,x,y)可以通过元素定位的方式按下,也可以通过元素坐标的方式按下。
release()方法为结束动作,手指按下之后离开屏幕。

# 通过元素定位方式按下屏幕
el = driver.find_element_by_xpath("//*[contains(@text,'WLAN')]")
TouchAction(driver).press(el).release().perform()
#通过坐标的方式,元素坐标x=149,y=324
TouchAction(driver).press(147,324).release().perform()

4、模拟手指长按操作long_press()方法。
长按相对于按下来说增加了按下的时间长短,所以参数多了一个duration单位是毫秒。
long_press(elemnet,x,y,duration)也是可以通过元素定位的方式按下,也可以通过元素坐标的方式按下。

    el =driver.find_element_by_id("android:id/title")
     # 通过元素定位方式长按元素
   	TouchAction(driver).long_press(el,duration=5000).release().perform()

     # 通过坐标方式长按元素,WiredSSID坐标:x=770,y=667
     #wait(5000)等待五秒
     # 添加等待(有长按X效果)/不添加等待(无长按效果)
     TouchAction(driver).long_press(x=770,y=667,duration=5000).release().perform()
### Appium Inspector 中 Tap 按钮无法点击元素的解决方案 在使用 Appium Inspector 进行元素定位时,如果发现 **Tap** 按钮无法正常工作,则可能是由于多种原因引起的。以下是可能的原因分析以及对应的解决方案: #### 1. 验证元素是否可交互 确保目标元素的状态允许被点击。某些情况下,UI 元素可能处于不可见状态或者未启用状态(`disabled`)。可以通过检查元素属性确认其状态。 ```python element = driver.find_element_by_id("your_element_id") print(element.is_enabled()) # 判断元素是否可用 print(element.is_displayed()) # 判断元素是否可见 ``` 如果 `is_enabled()` 或者 `is_displayed()` 返回 False,则说明该元素当前无法被点击[^2]。 --- #### 2. 使用坐标替代 Tap 动作 当 Tap 操作失效时,可以尝试通过屏幕上的具体坐标执行点击动作。这种方式绕过了 Appium 对元素的操作限制。 ```python from appium.webdriver.common.touch_action import TouchAction TouchAction(driver).press(x=700, y=2250).release().perform() ``` 此方法适用于那些因框架或其他技术问题而无法直接调用 Tap 方法的情况[^4]。 --- #### 3. 更新 Appium 版本 有时,Appium 自身版本过旧可能导致功能异常。建议升级至最新稳定版 Appium 和对应驱动程序(如 AndroidDriver 或 iOSDriver),并重新启动服务。 更新命令如下: ```bash npm install -g appium@latest ``` 重启后再次验证 Tap 是否生效[^3]。 --- #### 4. 调整 Desired Capabilities 设置 部分设备或应用需要特定配置才能支持完整的操作行为。例如,在安卓平台上需确保启用了以下选项之一: - `"automationName": "UiAutomator2"` - 添加权限参数:`"autoGrantPermissions": true` 示例代码片段: ```json { "platformName": "Android", "deviceName": "emulator-5554", "appPackage": "com.example.app", "appActivity": ".MainActivity", "automationName": "UiAutomator2", "autoGrantPermissions": true } ``` 这些设置有助于提高兼容性和稳定性[^1]。 --- #### 5. 排查网络环境影响 偶尔,网络延迟也可能干扰 Appium 的响应速度,从而导致某些按钮失灵现象发生。此时应优化连接质量或将测试迁移到本地环境中完成。 --- #### 总结 以上列举了几种常见场景及其处理办法,实际排查过程中可根据具体情况逐一试验直至找到根本原因所在。通常来说,优先考虑调整 desired capabilities 参数或是切换到更可靠的模拟器/真机组合来进行调试最为有效。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值