折腾:
【未解决】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操作安卓浏览器打开百度首页