Appium+Python3实现短信验证码的获取并填写

2,871 阅读1分钟

这里短信验证码的获取是通过打开通知栏,定位到短信内容,然后通过正则匹配出短信验证码;如果突然来多条短信会有一点问题,暂时没有想到更好的方法。

  
    # 元素定位:短信内容
    code_content = ["id", "android:id/big_text"]
    
    # 查找某个元素
    def find_element(self, *loc):
        """ 重写find_element方法,显式等待 """
        try:
            WebDriverWait(self.driver, 3).until(EC.visibility_of_element_located(loc))
            return self.driver.find_element(*loc)
        except Exception as e:
            self.logger.error(e)
            
    # 获取短信验证码
    def get_code(self):
        # 打开通知栏
        self.driver.open_notifications()
        # #获取短信内容
        e = self.find_element(*self.code_content)
        content = e.text
        print(content)
        # 通过正则匹配短信内容中的验证码
        code = re.findall(r'.*(\d{6}).*', content)[0]
        self.find_element(*self.close_btn).click()
        return code
    #填写短信验证码   
     def input_code(self):
        time.sleep(3)
        code = self.get_code()
        self.send_keys(code, *self.code)