Appium 安卓盒子怎么获取落焦?

卡丁车卡丁丁 · 2021年07月01日 · 最后由 liuxiao 回复于 2022年02月10日 · 2311 次阅读

安卓盒子和手机不同一点是,手机是触屏,直接可以点击相应元素

但是盒子没有触屏,是通过遥控器移动焦点去操作元素的

像这样的界面,怎么样可以快速的把焦点跳到某一个元素上面?直接用 findelement 方法,焦点不会动。。。

共收到 20 条回复 时间 点赞

up down left right😂

算坐标,touchAction move 到指定的 x,y 上,焦点就会动

KillerJiang 回复

这。。。。效率有点低,而且麻烦,得算格子不是

AlexYou 回复

这个移动之后会点进去吧

你先获取到你要定位的控件 然后拿到坐标 再去操作

咸鱼菜鸡 回复

拿到坐标后怎么操作?我只想把焦点放到上面,但是如果用点击之类得就会点进去了。。。

appium 新增了图片识别。可以试试

重来看雨 回复

图像识别也不会落焦到上面

AlexYou 回复

WebElement ele =findElementXXX;
new TouchAction(driver).moveTo(ElementOption.element(ele)).release().perform();

然后报错:Cannot perform TouchMove action at (1635, 511)

请明示啊大佬

重来看雨 回复

识别后,就可以获取到坐标啦

填坐标,别直接填 Element,getLocation 元素的起点坐标,在 getSize 获取一个方块的长度和宽度,起点坐标 X+ 宽度/2=中心坐标 X,起点坐标 Y+ 长度/2=中心坐标 Y,这样一个方块的中心坐标的 x,y 就获取到了可以直接用坐标移动点击

重来看雨 回复

获取到坐标后?我需要把焦点移动到元素上,而不是点击进去。。。

driver.tap 试试先啦,driver.scroll 这个可以从 A 元素滚动到 B 元素

是填的坐标啊老哥,ElementOption.element(ele),这个返回的就是一个坐标。。。。

确实无法把焦点移动过去,只能直接点击

重来看雨 回复

老铁,tap 直接就点进去了,scroll 在 androiddriver 里不能用

循环递增或者递减坐标数值,再用 sleep 控制递增或递减的速度,这样 move 不就可以看的清楚了么,我没试过,这只是我的一个想法

也许会跟我这边的一样。
未获焦的 tap 会获焦,已获焦的 tap 会打开
我是通过检验元素属性检查获焦状态,focus=true/false,来实现切换获焦而不打开内容

liuxiao 回复

试过了,设置不了,会报错。。。

liuxiao 回复

或者说你是怎么去设置的?

20楼 已删除
2楼 已删除

是获取这个状态,并不是去设置,这个是我的实现。
大概思路就是获取目标元素属性,如果是未选中,则点击;已选中,则不点。

def select_xian(self):
    icon = self.find_acc_element('鲜时光')
    if icon.get_attribute('selected') == 'false':
        icon.click()
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册