zoukankan      html  css  js  c++  java
  • Appium框架中Android下EditText内容清除

    在做手机自动化测试过程中 ,难免会对EditText的内容进行修改,通常我们对EditText输入 内容的时候,用的是Send_key()函数。可是这个函数不会先清除原来的内容,只会在光标当前位置上输入函数参数中的数据。如果我们需要修改,必须清除原来的内容,查看了一下clear()参数不好使用,只好去网上搜索了。

    http://testerhome.com/topics/1385,这个网页中提到了如下方法:

    “首先 clear(), send_keys(), set_text(),在android上不太好用是个已知的bug (在IOS上不清楚,没有测试环境),会在Appium 1.2.3上修复。请参见githubissuehttps://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)#删除文本框中是内容

    ----夫英雄者,胸怀大志,腹有良谋,有包藏宇宙之机,吞吐天地之志者也。
  • 相关阅读:
    mysql小白系列_04 datablock
    mysql小白系列_04 binlog(未完)
    mysql小白系列_03 体系结构-线程池
    mysql小白系列_02 mysql源码安装标准化
    国庆小长假来点不一样的,如何用Python爬取了全国近5000家旅游景点,一起来看
    python爬取p站排行榜并自动发送邮件-这个项目赚了500
    利用Azure backup备份和恢复Azure虚拟机(1)
    定制化Azure站点Java运行环境(5)
    定制化Azure站点Java运行环境(4)
    定制化Azure站点Java运行环境(3)
  • 原文地址:https://www.cnblogs.com/eagleking0318/p/6520978.html
Copyright © 2011-2022 走看看