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