![47ab395725b50fae69c49db814b3ea77.png](https://i-blog.csdnimg.cn/blog_migrate/1182a2881b1f31fb6e82cf68bb4bb376.jpeg)
处理手机获取授权弹框,网上百度基本都是教你
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
通过xpath定位到文本文字,然后通过显性等待形式,进行点击,然后循环五次。思路是没错,方法也没错,但是还很多人,通过以上方法还是未解决定位问题,始终无法完成点击按钮步骤。
终极解决方法:
#打印出页面信息,是否弹框按钮是否在当前页面print(driver.page_source)
![a84e23db3fe98660a6997199e111299c.png](https://i-blog.csdnimg.cn/blog_migrate/0ac9c1cc045f3333df7ea163b5804f26.jpeg)
把打印出来的页面html,复制到txt文件,看看页面源码。是否有“始终运行” 文件,可以ctrl+F 搜索一下。 结果是 找不到!!!
通过翻阅appium官网原文, 推荐使用
"automationName" : "UiAutomator2"
在你的信息头里面加入"automationName" : "UiAutomator2",就可以点击到 弹框按钮了
from appium import webdriverimport timefrom selenium.webdriver.support.ui import WebDriverWaitfrom selenium.webdriver.support import expected_conditions as ECr = { "platformName": "Android", "deviceName": "SJQ4C18927000478", "platformVersion": "8.1", "appPackage": "xxx", "appActivity": ".bnb.net.kexinmvp.WelcomeActivity", 'unicodeKeyboard': True, 'resetKeyboard': True, "automationName" : "UiAutomator2"}driver = webdriver.Remote("http://127.0.0.1:4723/wd/hub",r)time.sleep(3)driver.find_element_by_id("net.kexin.bnb:id/et_phone").send_keys("XXXX")driver.find_element_by_id("net.kexin.bnb:id/et_code").send_keys("XXXX")driver.find_element_by_android_uiautomator('new UiSelector().text("登录")').click()print(driver.page_source)for i in range(5): loc = ("xpath", "//*[@text='允许']") try: e = WebDriverWait(driver,2,0.5).until(EC.presence_of_element_located(loc)) e.click() except: pass