Appium框架中Android下EditText内容清除

在做 手机 自动化测试过程中 ,难免会对EditText的内容进行修改,通常我们对EditText输入 内容的时候,用的是Send_key()函数。可是这个函数不会先清除原来的内容,只会在光标当前位置上输入函数参数中的数据。如果我们需要修改,必须清除原来的内容,查看了一下clear()参数不好使用,只好去网上搜索了。
   找到了如下方法:
  “首先 clear(), send_keys(), set_text(),在android上不太好用是个已知的bug (在IOS上不清楚,没有测试环境),会在 Appium 1.2.3上修复。请参见github的issue:https://github.com/appium/python-client/issues/53
  在这之前我们可以用 press_keycode的方式实现删除,删除速度比忽略 clear()抛出的异常要快很多。
   大概思路是:
  1. 点击要清除的edit field
  2. 全选
  3. 删除
  element.click()
  sleep(1)   #waiting for 1 second is important, otherwise 'select all' doesn't work. However, it perform this from my view
  self.driver.press_keycode(29,28672)   # 29 is the keycode of 'a', 28672 is the keycode of META_CTRL_MASK
  self.driver.press_keycode(112)   # 112 is the keycode of FORWARD_DEL, of course you can also use 67“
  我试了一下上面的方法,没有什么效果,只好继续寻找了。搜了好多网页,在一个网页上看到了一个不错的办法,不过可以打开的网页太多了,一忙忘记是哪儿个网页了。具体的方案就是:
  先将光标移到文本框最后,然后取一下EditText中文本的长度,最后一个一个地删除文本。
   具体示例如下:
  def edittextclear(self,text):
  '''
  请除EditText文本框里的内容
  @param:text 要清除的内容
  '''
  DRIVER.keyevent(123)
  for i in range(0,len(text)):
  DRIVER.keyevent(67)
   使用实例:
  adr=DRIVER.find_element_by_id('com.subject.zhongchou:id/edit_person_detailaddress') #找到要删除文本的EditText元素
  adr.click()#激活该文本框
  context2=adr.get_attribute('text')#获取文本框里的内容
  self.edittextclear(context2)#删除文本框中是内容

最新内容请见作者的GitHub页:http://qaseven.github.io/
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值