如何使用Python授予Android系统权限

如何使用Python授予Android系统权限,android,python-3.x,appium,appium-android,python-appium,Android,Python 3.x,Appium,Appium Android,Python Appium,我是Python新手,尝试在Android 7.1.1模拟器上使用Appium 1.3.1和Python 3.6对应用程序进行自动化测试。 此时,我被系统权限弹出窗口卡住了,不知道如何使用Python选择“ALLOW”元素(与在应用程序中选择常规按钮不同)。 应用程序在获得文件访问权限之前不会启动,但我不确定在代码中的具体位置设置此项,以及如何在Python中编写它。 有人有什么样的示例代码或想法如何做到这一点吗? 这就是我到目前为止所做的: import os import unittest

我是Python新手,尝试在Android 7.1.1模拟器上使用Appium 1.3.1和Python 3.6对应用程序进行自动化测试。 此时,我被系统权限弹出窗口卡住了,不知道如何使用Python选择“ALLOW”元素(与在应用程序中选择常规按钮不同)。 应用程序在获得文件访问权限之前不会启动,但我不确定在代码中的具体位置设置此项,以及如何在Python中编写它。 有人有什么样的示例代码或想法如何做到这一点吗? 这就是我到目前为止所做的:

import os
import unittest
from appium import webdriver
from time import sleep

class meTest(unittest.TestCase):

def setUp(self):
    desired_caps = {}
    desired_caps['platformName'] = 'Android'
    desired_caps['platformVersion'] = '7.1.1'
    desired_caps['deviceName'] = 'Android Emulator'
    # Returns abs path relative to this file and not cwd
    desired_caps['app'] = ‘example.apk'

    self.driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)

 def test_OpenDocuments(self):
    sleep(10)
    documentSearchButton = self.driver.find_element_by_id(
        ‘example.example').click()


def tearDown(self):
    self.driver.quit()


if __name__ == '__main__':
suite = unittest.TestLoader().loadTestsFromTestCase(meTest)
unittest.TextTestRunner(verbosity=2).run(suite)

谢谢。

据我所知,您通常可以使用os.chown()设置权限。在您的示例(Python 3.6)中,以下内容可以工作:

os.chmod("path/to/your/file", 0o666)
当然,您需要修改访问权限以满足您的要求,“0o666”只是一个返回的示例,如:

-rw-rw-rw- 1 ag ag 0 Mar 25 05:55 your_file
要授予权限(在我的例子中是Android权限对话框中的“允许”按钮),需要访问Appium webdriver中所需的_caps。它会自动授予此应用程序的所有权限

desired_caps['autoGrantPermissions'] = 'true'

是否要将权限添加到.apk文件?我已经尝试将其添加到代码中,但仍然得到相同的弹出窗口,就像。有没有一种方法可以将它作为一个元素访问并简单地单击它?