Appium [已解决] 键盘弹出来导致无法定位到登陆的控件

点点寒彬 · 2015年11月23日 · 最后由 berylyl 回复于 2016年07月29日 · 2918 次阅读

先上代码

# -*- coding: utf-8 -*-
from appium import webdriver
desired_caps = {}
desired_caps['platformName'] = 'Android'
desired_caps['platformVersion'] = '4.4.2'
desired_caps['deviceName'] = 'wybtest'
desired_caps['appPackage'] = 'com.weizq'
desired_caps['appActivity'] = '.activity.LoginActivity'

driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)

textfield = driver.find_elements_by_class_name("android.widget.EditText")
textfield[0].send_keys("username")
textfield[1].send_keys("111222")
driver.find_element_by_id("com.weizq:id/login_btn").click()

新手小白一枚,在学习的过程中遇到这样一个问题,我想在 APP 界面执行一个登陆的操作,脚本输入用户名和密码后键盘会自动弹出来,把登陆按钮遮挡住了。界面如下:

我再使用 driver.find_element_by_id("com.weizq:id/login_btn").click() 这行命令的时候就会报错 selenium.common.exceptions.NoSuchElementException: Message: An element could not be located on the page using the given search parameters.
我自己 google 了一下,在 stack overflow 上给的解释是把 ID 替换成 “package+id”,可是我的代码里用的就是 “package+id”,仍然报了这个错,请大神指点迷津。


非常感谢大神们的解答,问题解决了好开心_^

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
共收到 15 条回复 时间 点赞

把键盘关掉。

#1 楼 @lihuazhang 我刚刚搜索了一下,要实现不弹出键盘,都需要开发在源代码上控制,请问一下有不需要改源代码的方法吗?

点击登录之前,加一步关掉键盘呗

#3 楼 @cy_suncheng 恩恩,这个我加上了,不过发现了另外一个问题,提示登陆成功,但是实际上没有登陆进去,我们这里的开发说是由于测试软件把 Android 的 intent 截取了,就会导致登陆不上。我对开发也不了解。。。。也不知道这个是为啥。

desired_caps['resetKeyboard'] = 'true'
desired_caps['unicodeKeyboard'] = 'true'
加上这两行就可以了

#4 楼 @wyb199026 使用 appium 的键盘 就如楼上的代码就不会出现你遇到的问题了。

#4 楼 @wyb199026 感觉这是 BUG。然后我好像没听说 Appium 的 Bootstrap 还会截取 INTENT?
方法 1:hide_keyboard()【3L】
方法 2:使用 Appium 的键盘(无 UI)【5L】

#5 楼 @hxhapppppy 非常感谢,已经成功啦!

#7 楼 @anikikun 按照 5L 的方法已经搞定啦,明天我再和开发说说这个问题。

#8 楼 @wyb199026 我也刚开始做自动化,可以多交流一下

#10 楼 @hxhapppppy 恩恩,互相学习

@hxhapppppy 请教一下 java 怎么调用 appium 的键盘

#12 楼 @mio 不知道 java 怎么调用 appium 键盘,如果你只是想隐藏键盘的话,试试 driver.hideKeyboard()

ios 系统怎么关闭键盘?,找到方法了

使用 app 自带键盘替代,java 方法:
capabilities.setCapability("unicodeKeyboard", "True");
capabilities.setCapability("resetKeyboard", "True");

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