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

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

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

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

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

共收到 20 条回复 时间 点赞

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

def select_xian(self):
    icon = self.find_acc_element('鲜时光')
    if icon.get_attribute('selected') == 'false':
        icon.click()
2楼 已删除
20楼 已删除
liuxiao 回复

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

liuxiao 回复

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

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

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

重来看雨 回复

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

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

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

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

重来看雨 回复

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

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

重来看雨 回复

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

AlexYou 回复

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

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

请明示啊大佬

重来看雨 回复

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

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

咸鱼菜鸡 回复

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

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

AlexYou 回复

这个移动之后会点进去吧

KillerJiang 回复

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

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

up down left right😂

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