【求助】智能家居测试中,控制设备后,设备状态变化,没办法能获取到状态变化的关联属性值

在智能家居系统测试中,设备的开关按钮,要么是imgeview,要么是view,想通过appium,获取打开、关闭时两者的属性值的变化,发现打开、关闭,属性值都没变化,没办法做打开、关闭的状态对比

如下图,这个控件是imgeview

下图,这个控件是view(开发自定义的)

请问大家遇到这种情况是怎么解决的?

Appium有个图像识别的功能,可以试试

图像识别?没注意到,1.15版本有吗,在哪个位置,怎么用,麻烦说下

http://appium.io/docs/en/advanced-concepts/image-elements/
1.19版本加的功能

self.driver.update_settings({"getMatchedImageResult": True})
el = self.driver.find_element_by_image('path/to/img.ong')
el.get_attribute('visual') # returns base64 encoded string

我看了下文档, :joy:不知道怎么搞,是不是需要我提前保存要验证的图片,
image

然后作对比?

本次多亏 霍格沃兹-修然 指点

思路:控制前后,按钮中心坐标点的颜色不一致,利用此差异,来对比实现控制结果状态获取。
主要步骤:

先截屏保存,再通过获取控件坐标,计算出 中心坐标点 坐标值,然后使用 PIL 库 getpixel((x,y))
方法,获取控制前后的颜色值,数值不同即说明状态有变化,APP端控制结果成功。代码只说明获取颜色值。

from PIL import Image
   def test_linghuokaiguan(self):  
        '''
        1,获取中心坐标点当前颜色状态值,如果前三个值为255,则说明为打开;如果前三个值为163,则说明为关闭
        2,点击后,等待3s,再次获取该中心坐标点值,与点击前的值相比较,相同则说明打开成功(打开失败)
        3,核对操作记录,进一步确认
        '''
        # APP启动后,等待房间元素可见,然后点击
        WebDriverWait(self.driver, 10).until(lambda x: x.find_element(*TestDevice.room_btn)).click()
        # 单开零火开关 快捷开关按钮可见
        ele =WebDriverWait(self.driver, 10).until(lambda x: x.find_element(*TestDevice.zhinengdengdai))
        time.sleep(3)
        # 定义图片存放路径路径
        image_file = os.path.join(base_dir, '234.png')
        logging.info(base_dir)
        # 截屏保存图片
        self.driver.get_screenshot_as_file(image_file)
        time.sleep(2)
        # 计算控件坐标
        left = ele.location.get('x')
        logging.info(left)
        top = ele.location.get('y')
        logging.info(top)
        width = ele.size['width']
        logging.info(width)
        height = ele.size['height']
        logging.info(height)
        # 中心点坐标
        left_1 = width/2 + left
        logging.info(left_1)
        top_1 = height/2 + top
        logging.info(top_1)
        # 打开并标识给定的文件
        img1 = Image.open(image_file)
        # logging.info(img1.mode)
        img_piexl= img1.getpixel((left_1,top_1))
        logging.info(img_piexl)
'''