Appium Appium_Python 如何输入银行卡账号?

long3ck · 2016年11月01日 · 最后由 何尔萌 回复于 2019年10月22日 · 1952 次阅读

Appium Python 如何输入银行卡账号?

直接用 send_keys,因为每四位会自己截断,老是会多输入
网上百度了下,单个 press_keycode 来输入,结果从 6228 4838 后面开始,还是会多输入一些数字。
代码如下,写得比较渣:

bankNum='6228 4838 6839 5041 574'

str2=bankNum.split(' ',4)
str3=[]

ele_bankNum=self.driver.find_element_by_id("com.junte.finance:id/edtCardCode")

for i in range(len(str2)):

      for j in range(len(str2[i])):
         #点击输入框
         ele_bankNum.click()
         #移动光标至末尾
         self.driver.press_keycode(123)

         #输入单个数字
         self.driver.press_keycode(int(str2[i][j])+7)

         #将已输入过的数据存进str3
         str3.append(int(str2[i][j]))

         #判断输入框的内容是否比str3有多输入,有则删掉最后一个 
         if (input_bankNum.text)[-1]!=' ' and len(input_bankNum.text)>=(len(str3)+2) :
                self.driver.press_keycode(67)

哪位有处理过类型问题,求助一下,给个思路也成啊,先谢谢了

共收到 6 条回复 时间 点赞

desired_caps['unicodeKeyboard'] = 'true'
这样试试

#1 楼 @jphtmt 已经设置 desired_caps['unicodeKeyboard']=True
desired_caps['resetKeyboard']=True

1.试一下使用模拟键盘输入。
针对银行卡输入框直接输入。
2.是否银行卡输入框是分离的 4 个?
那么尝试针对不同的控件输入不同值。
3.定位对象和输入 4 个值一起封装。
也就是说输入完 4 个值之后重新定位一下对象 (因为新增了属性,可能会新增对象,看布局),然后继续输入 4 位值,再次定位......

这个 我是直接用的 adb shell input text 做的输入 先 focus 到输入域 再输入, 遍历银行卡号,一个一个字符转成 keycode 用 presskeyCode 去做输入。输入完成一个后,做一次光标移动到输入域最后操作。

问题解决了
def press_Keycode(self,str,element):
# 将手机号字符串转化成字符数组
input_str=(','.join(str)).split(',')
# 通过模拟物理按键用 for 循环每次输入一个字符输入手机号
for i in range(len(input_str)):
# 用 press_keycode 方法模拟键盘逐个字符输入
self.driver.press_keycode(int(input_str[i])+7)
# 通过当前输入框内内容的长度来判断前端加空格截断后是否有多输入,有则删除多输入的
if len((element.text).replace(" ", ""))>i+1:
self.driver.press_keycode(67)
# 保持焦点在输入框内且每次输入单个字符后,将光标置到最后
if i==len(input_str)/2:
element.click()
self.driver.press_keycode(123)

大佬 请问解决了吗? 我也碰到这种问题,安全键盘,用 send_keys 报错

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册