【python+selenium】纯自动化解决web端短信验证码测试问题

解决验证码的问题无非就是几种方法:
1.让开发把验证码代码删掉(删掉怎么测)
2.用万能验证码(测不出问题)
3.写一个app,监听手机短信,把验证码放在文档里,再用python截取(神仙操作)
4.通过接口(如果能用接口获取岂不是很不安全)
5.手动输入验证码(那不是成半自动化了)
总之网上方法太多,要么不科学,要么太深奥,我这种菜鸟还是自己研究点笨方法吧:
经过我的冥思苦想我想到了一个很简单的方法,就是把selenium和appium结合起来

思路:

1.首先配好移动端自动化环境
2.连接手机与电脑,别忘了打开appium(手机必须有sim卡,能收到短信,不然你测什么验证码)
3.写好在web端输入手机号,点击获取验证码的代码
4.重点来了,接着在web自动化代码写移动端代码,正常导包,添加手机和安装包信息,调起手机,运行短信,(注意:因为短信是系统app,下载不到安装包,所以在手机下载一个叫apk提取器的app,可以提取系统应用的安装包)
5.点开验证码,用uiautomatorviewer获取到验证码的值(可能会有一个坑,如果你的手机像小米一样,验证码都归在一起了,那就会出现一个页面有不止一个验证码,没办法定位,所以要注意的就是在运行代码之前把手机里其他的验证码删掉,这样定位就肯定是刚发来的验证码)
6.把刚获取到的值输入到web端的文本框里

代码:

        #导包省略了
        self.driver.find_element_by_xpath('手机号的xpath').send_keys('11111111111')
        time.sleep(2)
        self.driver.find_element_by_xpath('点击获取验证码的xpath').click()
        #import os, sys
        from appium import webdriver
        desired_caps = {
            'platformName': 'Android',  # 设备系统
            'deviceName': 'f0eb6a74',  # 设备名称
            'platformVersion': '9',  # 设备系统版本
            'appPackage': 'com.android.mms',  # apk包名
            'appActivity': 'com.android.mms.ui.MmsTabActivity'  # apk的launcherActivity
        }
        driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)
        time.sleep(2)
        driver.tap([(796, 2027)])#以下为手机操作(每部手机分辨率不同,坐标不同)
        time.sleep(10)
        driver.tap([(620, 620)])#点击短信条目
        time.sleep(3)
        MmsCode = driver.find_element_by_id('com.android.mms:id/information_title2').text#获取短信验证码
        time.sleep(2)
        self.driver.find_element_by_xpath('//*[@id="vue"]/div/div[3]/input').send_keys(MmsCode)#在web端输入验证码

#学习笔记,仅供参考

你可能感兴趣的:(【python+selenium】纯自动化解决web端短信验证码测试问题)