折腾:
【未解决】Mac中用uiautomator2自动操作安卓手机浏览器实现百度搜索
期间,已经可以用uiautomator2启动小米内置安卓浏览器了
现在去打开百度首页
此处打开百度首页,最简单的是:
浏览器输入框中,直接输入百度首页地址,点击回车,即可
另外稍微复杂点的方式是:
新建窗口,再打开百度首页。
此处去试试简单的:
输入百度网址去打开
所以先去研究输入框元素:

属性是:
Selected Element Prop Value activity .BrowserActivity package com.android.browser className android.widget.TextView description 搜索框 text resourceId com.android.browser:id/b4h clickable true label x, y 160, 107 width 637 height 65 enabled true visible XPath //*[@resource-id="com.android.browser:id/b4h"] position (0.532, 0.057) 点击 代码 d(resourceId="com.android.browser:id/b4h")
有多种方式定位到元素。
先去用最常用的:id
参考自己教程
用代码:
# find input box inside address bar
# inputElem = d.xpath("//android.widget.TextView[@id='b4h']")
# inputElem=<uiautomator2.xpath.XPathSelector object at 0x10fa3abb0>
inputElem = d(resourceId="com.android.browser:id/b4h")
# print("inputElem=%s" % inputElem)
# inputElem=<uiautomator2.session.UiObject object at 0x1097abbe0>
if inputElem.exists:
print("Found input box %s" % inputElem)可以找到元素:

注:用xpath,竟然找不到元素。。。
后记:想起来了,是要用resourceId
去试试:
inputXpathSelector = d.xpath("//android.widget.TextView[@resourceId='b4h']")问题依旧。
再去参考:
用:
inputXpathSelector = d.xpath("//android.widget.TextView[@resource-id='b4h']")结果:问题依旧。
最后用:
inputXpathSelector = d.xpath("//android.widget.TextView[@resource-id='com.android.browser:id/b4h']")找到元素了:

另外试了:
inputXpathSelector = d.xpath("//*[@resource-id='com.android.browser:id/b4h']")也是可以找到元素的。
期间遇到了:
【已解决】用uiautomator2查找不到元素如何等待app启动完毕
然后继续:
看看如何打开百度首页
看起来,还是要:
新建窗口,输入百度网址,打开百度首页,更合适些。
所以去:
【规避解决】用uiautomator2操作安卓浏览器新建窗口并打开百度主页
又回来了。
那重新试试:
安卓浏览器地址栏中输入百度首页网址
期间遇到set_text无效的问题:
【规避解决】uiautomator2对于安卓浏览器的输入框set_text输入文字无效
继续,进入了输入框页面

Prop Value activity .BrowserActivity package com.android.browser className android.widget.EditText description text 北京成全球亿万富翁最多城市 resourceId com.android.browser:id/bq3 clickable true label x, y 160, 83 width 569 height 112 enabled true visible XPath //*[@resource-id="com.android.browser:id/bq3"] position (0.487, 0.057) 点击 代码 d(resourceId="com.android.browser:id/bq3")
去写代码
BaiduHomeUrl = "https://www.baidu.com/" searchUiObj = d(resourceId="com.android.browser:id/bq3", className="android.widget.EditText") searchUiObj.set_text(BaiduHomeUrl)
是可以输入内容的:

然后就是触发搜索了
此处用前面试过的:
d.press("enter")即可打开百度首页

此处弹框中的 获取定位
此处为了简化操作:
确保已勾选:不再询问
手动点击 允许
-》则以后不会再提示
【总结】
此处代码:
################################################################################
# Open baidu homepage
################################################################################
# trigger into input page
# Method 1
inputUiObj = d(resourceId="com.android.browser:id/b4h", className="android.widget.TextView")
inputUiObj.click()
# # Method 2
# inputXpathSelector = d.xpath("//android.widget.TextView[@resource-id='com.android.browser:id/b4h']")
# inputXpathSelector.click()
# input baidu homr url
BaiduHomeUrl = "https://www.baidu.com/"
searchUiObj = d(resourceId="com.android.browser:id/bq3", className="android.widget.EditText")
searchUiObj.set_text(BaiduHomeUrl)
# trigger jump to baidu home
d.press("enter")即可:
在浏览器首页中,点击顶部搜索框,进入搜索地址栏输入框页面
输入了百度首页地址后
输入回车键,触发跳转
进入了百度首页
效果:

转载请注明:在路上 » 【已解决】用uiautomator2操作安卓浏览器打开百度首页