appium python 用xpath和tap模拟点击

有的时候会出现clickable=false不能点击,以及一些其他不能用click()的情况。此时如果没有resource_id和text,我想到了一种方式也可以模拟点击,虽然目前用到这种方式的情况并不多,但是记录下来万一以后会用到。
总的来说就是利用xpath+tap

1、用xpath定位到元素
element = driver.find_element_by_xpath(xpath) #这里的xpath要换成元素的xpath信息
2、用.size和.location方法获取元素的大小和坐标

至于为什么不用bounds,是因为想使方法更灵活,在连接另一个分辨率的手机的时候也能适配。

elem_size = element.size
elem_location = element.location

print出来elem_size和elem_location是这样的:
{‘width’: 285, ‘height’: 76}
{‘y’: 233.0, ‘x’: 28.0}

3、将size和location的数据处理成bounds

这里将第2步中elem_size和elem_location的数据处理成bound的类型,这样做是因为可以提供个tap方法做参数,脚本如下:

#根据size和location定位,返回tap中的参数
def coordinate(size, location):
    _x_ = size.get('width')
    _y_ = size.get('height')
    x1 = location.get('x')
    y1 = location.get('y')
    x2 = x1 + _x_
    y2 = y1 + _y_
    return [(x1, y1), (x2, y2)]
4、最后调用tap方法模拟点击
bounds = coordinate(mesg.size, mesg.location)
driver.tap(bounds, 100)
全部的脚本示例:
#用xpath和tap模拟点击

def coordinate(size, location):
    _x_ = size.get('width')
    _y_ = size.get('height')
    x1 = location.get('x')
    y1 = location.get('y')
    x2 = x1 + _x_
    y2 = y1 + _y_
    return [(x1, y1), (x2, y2)]
    
element = driver.find_element_by_xpath(xpath) #这里的xpath要换成元素的xpath信息
elem_size = element.size
elem_location = element.location
bounds = coordinate(elem_size, elem_location)
driver.tap(bounds, 100)
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
使用Appium模拟上传图片需要以下步骤: 1. 找到上传图片的控件,可以使用Appium提供的控件查找方法,比如find_element_by_id或find_element_by_xpath等。 2. 点击上传图片的控件,弹出选择图片的对话框。 3. 选择需要上传的图片,可以使用Appium提供的模拟点击、滚动等方法。 4. 点击确定或上传按钮,上传图片。 以下是一个简单的示例代码: ```python # 导入Appium相关库 from appium import webdriver from appium.webdriver.common.touch_action import TouchAction from appium.webdriver.common.mobileby import MobileBy from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC import time # 启动Appium会话 desired_caps = {} desired_caps['platformName'] = 'Android' desired_caps['platformVersion'] = '10' desired_caps['deviceName'] = 'emulator-5554' desired_caps['appPackage'] = 'com.example.app' desired_caps['appActivity'] = '.MainActivity' driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps) # 查找上传图片的控件 upload_btn = WebDriverWait(driver, 10).until(EC.presence_of_element_located((MobileBy.ID, 'com.example.app:id/upload_btn'))) # 模拟点击上传图片的按钮 upload_btn.click() # 选择需要上传的图片 time.sleep(2) # 等待选择图片的对话框弹出 TouchAction(driver).tap(x=200, y=400).perform() # 点击第一张图片 time.sleep(2) # 等待图片上传完成 # 点击确定或上传按钮,上传图片 confirm_btn = WebDriverWait(driver, 10).until(EC.presence_of_element_located((MobileBy.ID, 'com.example.app:id/confirm_btn'))) confirm_btn.click() # 关闭Appium会话 driver.quit() ``` 注意:以上代码仅供参考,具体实现需要根据实际情况进行调整。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值