Objective
Run the Appium code with the real machine, the first time you open the app, some phones will have permission pop-up window problem, usually this pop-up window is in front of the boot page or after the boot page appears. The buttons on the right pop-up window are fixed,
Just navigate to the "Always Allow" button and click OK. There is another problem is that the number of pop-up windows are not certain, some apps are 2 or 3, in order to solve this problem, you can write a judgment method.
Note: The emulator does not have this permission pop-up window
Environment:
Appium 1.8
Android 7.0
American Group App
Permission pop-up window
1. In the case of the American Group app, when the app is first launched, a permission pop-up box appears on the boot page, such as this
2. This kind of pop-up window can be directly located, and here can not be located through the ID, because more pop-up windows, each time the ID is not the same, but the text is the same: always Allow
Positioning System pop-up window
1. Use XPath to position the button: always Allow
LOC = ("XPath", "//*[@text = ' Always Allow ']")
2. Use the selenium inside the display waiting module (webdriverwait) and the Judgment Module (expected_conditions) Packaging positioning method, before the Selenium tutorial in detail, here will not repeat the
From Selenium.webdriver.support.ui import webdriverwait
From Selenium.webdriver.support import expected_conditions as EC
# 判断是否有权限弹窗for i in range(5): loc = ("xpath", "//*[@text=‘始终允许‘]") try: e = WebDriverWait(driver, 1, 0.5).until(EC.presence_of_element_located(loc)) e.click() except: pass
3. Write a separate function, encapsulating the system permissions to judge the popup window, before the use case before the call can be
Reference Code
#Coding:utf-8 fromAppiumImportWebdriver fromSelenium.webdriver.support.uiImportwebdriverwait fromSelenium.webdriver.supportImportExpected_conditions as ECImportOSImportTimepath=LambdaX:os.path.join (Os.path.dirname (Os.path.realpath (__file__) ), X)#Baidu Download an American group app, put the current script in the same directoryPrint(PATH ('meituan_626.apk')) Desired_caps= { 'PlatformName':'Android', 'devicename':'127.0.0.1:62001', 'platformversion':'7.0', 'app': PATH ('meituan_626.apk'), 'Apppackage':'Com.sankuai.meituan', 'appactivity':'Com.meituan.android.pt.homepage.activity.Welcome', 'NoReset':'true', #' resetkeyboard ': ' True ', #' unicodekeyboard ': ' True '}driver= Webdriver. Remote ('Http://127.0.0.1:4723/wd/hub', Desired_caps) time.sleep (3)defAlways_allow (Driver, number=5): " "fuction: Permission popup-Always allow args:1. Driver 2.number, judging the number of pop-up windows, default to 5 times other: Webdriverwait inside 0.5s To determine if there is a pop-up window, 1s timeout" " forIinchRange (number): Loc= ("XPath","//*[@text = ' Always Allow ']") Try: E= Webdriverwait (driver, 1, 0.5). Until (ec.presence_of_element_located (Loc)) E.click ()except: Passif __name__=="__main__": #call always allow functionAlways_allow (Driver)
Appium+python Automation 47-opening app permissions for the first time popup issue