Hypium自动化测试如何访问设备的图库
====================

#### 问题现象

如何使用Hypium库实现访问图库？

#### 背景知识

*   [照片和视频存储位置](https://developer.huawei.com/consumer/cn/doc/harmonyos-faqs/faqs-local-file-manager-34)为/storage/cloud/100/files/Photo和/storage/media/100/local/files/Photo。
*   mediatool是一个轻量级的命令行工具集合，开发者可通过此工具操作媒体库资源。媒体库为图库提供和管理数据，媒体库中的图片和视频会在图库界面呈现。具体请参考[mediatool工具使用指导](https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/mediatool)。

#### 解决方案

使用Hypium库实现访问图库，由于系统权限限制需要结合mediatool工具使用。最终可以实现访问图库。

*   查询图库/storage/media/100/local/files/Photo中目录以及文件。
    
    import logging
    from devicetest.core.test\_case import TestCase, Step
    from hypium import UiDriver
    
    class TC\_001(TestCase):
        def \_\_init\_\_(self, configs):
            self.TAG = self.\_\_class\_\_.\_\_name\_\_
            super().\_\_init\_\_(self.TAG, configs)
            self.driver = UiDriver(self.device1)
            self.driver\_width, self.driver\_height = self.driver.get\_display\_size()
    
        def setup(self):
            Step('1.回到桌面')
            self.driver.swipe\_to\_home()
    
        def process(self):
            Step("步骤1：查询出/storage/media/100/local/files/Photo目录下文件夹")
            echo = self.driver.shell('mediatool ls -l /storage/media/100/local/files/Photo')
            file\_list = echo.split('\\n')\[:-1\]
            file\_name = \[\]
            for i in range(len(file\_list) - 1):
                file\_name\_list = file\_list\[i\].split()
                file\_name.append(file\_name\_list\[len(file\_name\_list) - 1\])
            Step("步骤2：选择其中一个文件夹查看文件")
            file = self.driver.shell('mediatool ls -l /storage/media/100/local/files/Photo/{}'.format(file\_name\[0\]))
            logging.info('file:' + str(file))
    
        def teardown(self):
            Step("收尾工作xxxx")
            pass
    
*   已知图片名称查看图片在设备中的位置，此处的文件名为图片设备显示名称display-name，可参考[mediatool查询命令](https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/mediatool#查询命令mediatool-query)。
    
    locations = self.driver.shell('mediatool query IMG\_XXXXX\_XXXXX.jpg')
    logging.info('locations:' + locations)