def companyPassForget(driver, Act, Type): waitUntilClick(driver, path_backStage_authentication.btn_forPass_css.value) sleep(1) driver.find_element_by_css_selector( path_backStage_authentication.btn_forPass_css.value).click() waitUntilClick(driver, loginOn.btn_next_css.value) sleep(0.5) driver.find_element_by_css_selector( loginOn.input_actForget_css.value).send_keys(Act) driver.find_element_by_css_selector( loginOn.input_codeForget_css.value).send_keys(' ') waitUntilClick(driver, loginOn.btn_phoneCodeForget_css.value) sleep(0.5) flushDb() driver.find_element_by_css_selector( loginOn.btn_phoneCodeForget_css.value).click() while 1: if Type == 1: message = getPhoneMessage().get("actBank") else: message = getPhoneMessage().get("actRisk") if message is None: sleep(1) continue else: break message = message.strip().strip('"') el = driver.find_element_by_css_selector( loginOn.input_phoneCodeForget_css.value) el.send_keys(Keys.LEFT) el.send_keys(message) el.send_keys(Keys.DELETE) # 密码重置页面 waitUntilClick(driver, loginOn.btn_next_css.value) sleep(0.5) driver.find_element_by_css_selector(loginOn.btn_next_css.value).click() waitUntilDisplay(driver, loginOn.btn_nextPwd_css.value) logger.info("成功进入到密码重置页面") sleep(0.5) driver.find_element_by_css_selector( loginOn.input_pwdForget_css.value).send_keys('123456') driver.find_element_by_css_selector( loginOn.input_pwdConfirm_css.value).send_keys('123456') driver.find_element_by_css_selector(loginOn.btn_nextPwd_css.value).click() # 修改完成画面 sleep(2) logger.info("成功进入到密码修改完成页面")
def companyPassForgetForward(act): driver = webdriver.Chrome() driver.maximize_window() driver.get(url_forward) logger.info("登录页面") waitUntilClick(driver, loginOn.href_passForget_css.value) sleep(1) driver.find_element_by_css_selector( loginOn.href_passForget_css.value).click() waitUntilClick(driver, loginOn.btn_nextPwd1_css.value) logger.info("安全验证页面") driver.find_element_by_css_selector( loginOn.input_phoneNum_css.value).send_keys(act) driver.find_element_by_css_selector( loginOn.input_veryCode_css.value).send_keys(' ') flushDb() driver.find_element_by_css_selector( loginOn.btn_phoneVeryCode_css.value).click() while 1: message = getPhoneMessage().get("forgeMes") if message is None: sleep(1) continue else: break driver.find_element_by_css_selector( loginOn.input_phoneVeryCode_css.value).send_keys( message.strip().strip('"')) driver.find_element_by_css_selector(loginOn.btn_nextPwd1_css.value).click() waitUntilClick(driver, loginOn.btn_nextPwd2_css.value) logger.info("重置密码页面") driver.find_element_by_css_selector( loginOn.input_newPwd_css.value).send_keys(pwd) driver.find_element_by_css_selector( loginOn.input_newPwdCon_css.value).send_keys(pwd) driver.find_element_by_css_selector(loginOn.btn_nextPwd2_css.value).click() sleep(1) driver.quit()
def test_companyRegister(): if runMode == 'UI': def_name = sys._getframe().f_code.co_name test_Assert = Assert.Assertions(def_name) logger.info("开始执行脚本%s:\n", def_name) if jenkins: option = webdriver.ChromeOptions() option.add_argument('headless') # 浏览器不提供可视化页面 option.add_argument('no-sandbox') # 以最高权限运行 option.add_argument('--start-maximized') # 最大化运行(全屏窗口)设置元素定位比较准确 option.add_argument('--disable-gpu') # 谷歌文档提到需要加上这个属性来规避bug option.add_argument('--window-size=1920,1080') # 设置浏览器分辨率(窗口大小) driver = webdriver.Chrome(options=option) else: driver = webdriver.Chrome(executable_path=driverPath) driver.maximize_window() driver.get(url_ui_register) # db中清除已注册的账户 deleteInforMobile() logger.info("对已注册的账户进行删除操作") sleep(1) waitUntilClick(driver, loginOn.btn_agree_css.value) driver.find_element_by_css_selector( loginOn.btn_agree_css.value).click() waitUntilDisplay(driver, loginOn.input_act_css.value) driver.find_element_by_css_selector( loginOn.input_act_css.value).send_keys(act) driver.find_element_by_css_selector( loginOn.input_pwd_css.value).send_keys(pwd) driver.find_element_by_css_selector( loginOn.input_conPwd_css.value).send_keys(pwd) waitUntilClick(driver, loginOn.btn_phoneCode_css.value) sleep(2) flushDb() driver.find_element_by_css_selector( loginOn.btn_phoneCode_css.value).click() while 1: message = getPhoneMessage().get("regMes") if message is None: sleep(0.5) continue else: break driver.find_element_by_css_selector( loginOn.input_phoneCode_css.value).send_keys( message.strip().strip('"')) waitUntilClick(driver, loginOn.btn_agreeReg.value) driver.find_element_by_css_selector(loginOn.btn_agreeReg.value).click() title = driver.title test_Assert.assert_text_ui(title, '中小微企业金融服务聚合平台') logger.info("注册成功,返回到登陆页面") sleep(1) driver.quit() else: # touch(Template(r"C:\Users\shaojunshuai\PycharmProjects\AutoTest-python\Auto_Test\test_data\picture\id_5.png")) logger.info("小程序自动化测试开始") startWeinxin() deleteInforMobile() # 删除个人信息 # clearCache() picture_dir1 = os.getcwd() + '\\test_data\\picture\\id_9.png' touch(Template(picture_dir1)) waiteForClick(mobileDriver(text='允许')) waiteForClick(mobileDriver(text='授权手机号')) waiteForClick(mobileDriver(text='允许')) # companyPassForgetForward(act) logger.info("小程序个人实名认证页面") # 上传身份证正反面 waiteForClick(mobileDriver(text='请上传身份证头像面')) waiteForClick(mobileDriver(text='所有图片')) waiteForClick(mobileDriver(text='自动化测试专用相册')) mobileDriver("android.widget.LinearLayout").offspring( "com.tencent.mm:id/dm6").child("com.tencent.mm:id/f4b")[3].child( "com.tencent.mm:id/dm0").click() waiteForClick(mobileDriver(text='完成')) sleep(3) waiteForClick(mobileDriver(text='请上传身份证国徽面')) waiteForClick(mobileDriver(text='所有图片')) waiteForClick(mobileDriver(text='自动化测试专用相册')) mobileDriver("android.widget.LinearLayout").offspring( "com.tencent.mm:id/dm6").child("com.tencent.mm:id/f4b")[2].child( "com.tencent.mm:id/dm8").click() waiteForClick(mobileDriver(text='完成')) sleep(1) waiteForClick(mobileDriver(text='提交认证')) # 活体认证欺诈性校验 getVerification() # 等待直到元素消失 while True: if mobileDriver(text='身份证有效期至').exists(): break else: continue picture_dir = os.getcwd() + '\\test_data\\picture\\id_6.png' touch(Template(picture_dir))
def authentication(driver, Type): if Type == 1: backStageLogin(driver, company_bank, company_bank_pass, 1) else: backStageLogin(driver, company_Guarantee, company_Guarantee_pass, 1) sleep(3) flushDb() driver.find_element_by_css_selector( path_backStage_authentication.btn_codeAu_css.value).click() while 1: if Type == 1: message = getPhoneMessage().get("AuBank") else: message = getPhoneMessage().get("AuRisk") if message is None: sleep(1) continue else: break message = message.strip().strip('"') driver.find_element_by_css_selector( path_backStage_authentication.input_codeAu_css.value).send_keys( message) picture_dir1 = os.getcwd() + '\\test_data\\picture\\id_1.jpg' picture_dir2 = os.getcwd() + '\\test_data\\picture\\id_2.jpg' picture_dir3 = os.getcwd() + '\\test_data\\picture\\id_3.jpg' driver.find_element_by_css_selector( path_backStage_authentication.upload_pic1_css.value).send_keys( picture_dir1) driver.find_element_by_css_selector( path_backStage_authentication.upload_pic2_css.value).send_keys( picture_dir2) sleep(1) driver.find_element_by_css_selector( path_backStage_authentication.btn_submitAu_css.value).click() # 企业信息认证 logger.info('企业信息认证') waitUntilClick(driver, path_backStage_authentication.btn_goToAu_css.value) sleep(1) driver.find_element_by_css_selector( path_backStage_authentication.input_soCode_css.value).send_keys( '515328000000000510') driver.find_element_by_css_selector( path_backStage_authentication.input_layName_css.value).send_keys('黄晓明') driver.find_element_by_css_selector( path_backStage_authentication.input_IdCardLay_css.value).send_keys( '110101199003077774') sleep(1) driver.find_element_by_css_selector( path_backStage_authentication.input_addressLay_css.value).send_keys( '陆家嘴金砖大厦') driver.find_element_by_css_selector( path_backStage_authentication.input_postLay_css.value).send_keys( '220000') driver.find_element_by_css_selector( path_backStage_authentication.upload_pic3_css.value).send_keys( picture_dir3) driver.find_element_by_css_selector( path_backStage_authentication.btn_goToAu_css.value).click() logger.info('协议内容确认页面') waitUntilClick( driver, '#root > div > section > section > main > div > div > div > div > div > div:nth-child(2) > div > button' ) driver.find_element_by_css_selector( path_backStage_authentication.checkBox_agree_css.value).click() sleep(0.5) driver.find_element_by_css_selector( path_backStage_authentication.btn_startAu_css.value).click() if Type == 0: # 活体认证欺诈性校验(担保公司) getVerification_ui(RequestURL, company_Guarantee) else: # 活体认证欺诈性校验(银行) getVerification_ui(RequestURL, company_bank) logger.info('二维码认证页面') while True: try: text = driver.find_element_by_css_selector( path_backStage_authentication.text_au_css.value).text if text == '认证成功': break except: sleep(0.5) continue if Type == 0: driver.quit()
def test_backstage_examine(): def_name = sys._getframe().f_code.co_name test_Assert = Assert.Assertions(def_name) logger.info("开始执行脚本%s:\n", def_name) if jenkins: option = webdriver.ChromeOptions() option.add_argument('headless') # 浏览器不提供可视化页面 option.add_argument('no-sandbox') # 以最高权限运行 option.add_argument('--start-maximized') # 最大化运行(全屏窗口)设置元素定位比较准确 option.add_argument('--disable-gpu') # 谷歌文档提到需要加上这个属性来规避bug option.add_argument('--window-size=1920,1080') # 设置浏览器分辨率(窗口大小) driver = webdriver.Chrome(options=option) else: driver = webdriver.Chrome(executable_path=driverPath) driver.maximize_window() driver.get(url_back) act = yamldict['test_backStageUserList']['company_user'] pwd = yamldict['test_backStageUserList']['company_user_pass'] # 登陆页面 backStageLogin(driver, act, pwd, 0) updateNameCompany() sleep(2) driver.find_element_by_xpath( path_backstage_examine.btn_bussMan_xpath.value).click() sleep(1) driver.find_element_by_xpath( path_backstage_examine.btn_bussList_xpath.value).click() sleep(1) elList = driver.find_elements_by_xpath( path_backstage_examine.btn_bussListName_xpath.value) index = 0 for i in range(len(elList)): path = path_backstage_examine.btn_bussListName_xpath.value + '[' + str( i + 1) + ']/' + 'td' + '[' + str(1) + ']' text = driver.find_element_by_xpath(path).text if text == businessName: index = i break bussPath = path_backstage_examine.btn_bussListName_xpath.value + '[' + str( index + 1) + ']' + '/td[8]' + '/span/a' driver.find_elements_by_xpath(bussPath)[0].click() sleep(0.5) waitUntilDisplay(driver, path_backstage_examine.txt_userInfor_css.value) userInforTxt = driver.find_element_by_css_selector( path_backstage_examine.txt_userInfor_css.value).text test_Assert.assert_text_ui(userInforTxt, "用户基本信息") logger.info('成功进入企业信息审核画面') driver.find_element_by_css_selector( path_backstage_examine.input_examine_css.value).send_keys('企业审核通过') driver.find_element_by_css_selector( path_backstage_examine.btn_code_css.value).click() while 1: message = getPhoneMessage().get("Audit") if message is None: sleep(0.5) continue else: break driver.find_element_by_css_selector( path_backstage_examine.input_code_css.value).send_keys( message.strip().strip('"')) driver.find_element_by_css_selector( path_backstage_examine.btn_examinePass_css.value).click() sleep(1) logger.info("企业认证通过") driver.quit()
def loanApply(driver_forward): sleep(2) productChoose(driver_forward) driver_forward.find_element_by_css_selector(path_Tripartite_interaction.select_productQuery_css.value).click() waitUntilClick(driver_forward, path_Tripartite_interaction.btn_productSubmit_css.value) driver_forward.find_element_by_css_selector(path_Tripartite_interaction.btn_productSubmit_css.value).click() logger.info('进入收款账户管理画面') waitUntilClick(driver_forward, path_Tripartite_interaction.btn_next_css.value) sleep(1) driver_forward.find_element_by_css_selector(path_Tripartite_interaction.input_bankNumMan_css.value).send_keys( '12222221222222') driver_forward.find_element_by_css_selector(path_Tripartite_interaction.input_bankPhone_css.value).send_keys( company_user) flushDb() driver_forward.find_element_by_css_selector(path_Tripartite_interaction.btn_veryCod_css.value).click() while 1: message = getPhoneMessage().get("loanMes") if message is None: sleep(0.5) continue else: break driver_forward.find_element_by_css_selector(path_Tripartite_interaction.input_veryCod_css.value).send_keys( message.strip().strip('"')) driver_forward.find_element_by_css_selector(path_Tripartite_interaction.btn_next_css.value).click() logger.info('银行卡已经添加') logger.info('进入借款申请画面') sleep(2) driver_forward.find_element_by_css_selector(path_Tripartite_interaction.select_act_css.value).click() sleep(0.5) driver_forward.find_element_by_xpath("//*[text() = '12222221222222']").click() driver_forward.find_element_by_css_selector(path_Tripartite_interaction.input_loanMoney_css.value).send_keys( '90000') driver_forward.find_element_by_css_selector(path_Tripartite_interaction.input_loanMonth_css.value).send_keys( '12') while True: try: driver_forward.find_element_by_css_selector( path_Tripartite_interaction.select_repaymentWay_css.value).click() sleep(1) driver_forward.find_element_by_xpath("//*[text() = '随借随还']").click() break except: continue driver_forward.find_element_by_css_selector(path_Tripartite_interaction.input_reason_css.value).send_keys( '政府项目借贷') driver_forward.find_element_by_css_selector(path_Tripartite_interaction.checkBox_agreeLoan_css.value).click() driver_forward.find_element_by_css_selector(path_Tripartite_interaction.btn_submitLoan_css.value).click() # 点击返回 while True: # 活体认证欺诈性校验 try: sleep(5) getVerification() break except: continue WebDriverWait(driver_forward, 1200).until( EC.presence_of_element_located((By.CSS_SELECTOR, path_Tripartite_interaction.text_back_css.value))) driver_forward.find_element_by_css_selector(path_Tripartite_interaction.btn_myMain_css.value).click()
def test_Tripartite_interaction(): def_name = sys._getframe().f_code.co_name logger.info("开始执行脚本%s:\n", def_name) # 前端账户授信申请 if runMode == 'UI': if jenkins: option = webdriver.ChromeOptions() option.add_argument('headless') # 浏览器不提供可视化页面 option.add_argument('no-sandbox') # 以最高权限运行 option.add_argument('--start-maximized') # 最大化运行(全屏窗口)设置元素定位比较准确 option.add_argument('--disable-gpu') # 谷歌文档提到需要加上这个属性来规避bug option.add_argument('--window-size=1920,1080') # 设置浏览器分辨率(窗口大小) driver_forward = webdriver.Chrome(options=option) else: driver_forward = webdriver.Chrome(executable_path=driverPath) driver_forward.maximize_window() driver_forward.get(url_forward) logger.info('前端账户登录授信申请') login(driver_forward) sleep(2) creditExtension(driver_forward) else: waiteForClick(mobileDriver(text='产品服务')) el = mobileDriver(text='我的', name='android.view.View', type='android.view.View') dragUntilTextAppear(el, '产品服务', product_name) waiteForClick(mobileDriver(text=product_name)) waiteForClick(mobileDriver(text='立即申请')) logger.info('授信采购信息画面') waiteForClick(mobileDriver(text='请输入银行账号')) text('123456789012') mobileDriver(text='分支行').click() waiteForClick(mobileDriver(text='请选择项目')) waiteForClick(mobileDriver(text='请输入项目名称').parent().parent().parent().child()[2]) waiteForClick(mobileDriver(text='下一步')) logger.info('授信基本资料页面') waiteForClick(mobileDriver(text='下一步')) logger.info('授信页面') sleep(2) mobileDriver(text='企业经营场所照片').drag_to(mobileDriver(text='业务申请'), 0.5) mobileDriver(text='企业征信').drag_to(mobileDriver(text='业务申请'), 0.5) mobileDriver(text='财务证明资料').drag_to(mobileDriver(text='业务申请'), 0.5) waiteForClick(mobileDriver(text='我已阅读并同意提交资料', type='android.widget.CheckBox').child().child()) waiteForClick(mobileDriver(text='提交授信')) # 活体认证欺诈性校验 getVerification() while True: flg = mobileDriver(text='安全认证中').exists() if flg: sleep(1) break else: continue while True: flg = mobileDriver(text='安全认证中').exists() if flg: continue else: sleep(1) break sleep(1) picture_dir = os.getcwd() + '\\test_data\\picture\\id_7.png' touch(Template(picture_dir)) touch(Template(picture_dir)) touch(Template(picture_dir)) sleep(2) picture_dir1 = os.getcwd() + '\\test_data\\picture\\id_8.png' touch(Template(picture_dir1)) logger.info('授信完成页面') # 银行授信审核 if jenkins: option = webdriver.ChromeOptions() option.add_argument('headless') # 浏览器不提供可视化页面 option.add_argument('no-sandbox') # 以最高权限运行 option.add_argument('--start-maximized') # 最大化运行(全屏窗口)设置元素定位比较准确 option.add_argument('--disable-gpu') # 谷歌文档提到需要加上这个属性来规避bug option.add_argument('--window-size=1920,1080') # 设置浏览器分辨率(窗口大小) driver_bank = webdriver.Chrome(options=option) else: driver_bank = webdriver.Chrome(executable_path=driverPath) driver_bank.maximize_window() driver_bank.get(url_back) logger.info('银行授信审核') backStageLogin(driver_bank, company_bank, company_bank_pass, 0) CreditAudit_Bank(driver_bank) # 担保公司审核 if jenkins: option = webdriver.ChromeOptions() option.add_argument('headless') # 浏览器不提供可视化页面 option.add_argument('no-sandbox') # 以最高权限运行 option.add_argument('--start-maximized') # 最大化运行(全屏窗口)设置元素定位比较准确 option.add_argument('--disable-gpu') # 谷歌文档提到需要加上这个属性来规避bug option.add_argument('--window-size=1920,1080') # 设置浏览器分辨率(窗口大小) driver_bank = webdriver.Chrome(options=option) else: driver_risk = webdriver.Chrome(executable_path=driverPath) driver_risk.maximize_window() driver_risk.get(url_back) logger.info('担保公司审核') backStageLogin(driver_risk, company_Guarantee, company_Guarantee_pass, 0) CreditAudit_Risk(driver_risk) # 借款申请 if runMode == 'UI': loanApply(driver_forward) else: # 移动端借款申请 waiteForClick(mobileDriver(text='我的授信')) waiteForClick(mobileDriver(text='马上使用')) logger.info('添加银行卡账户画面') waiteForClick(mobileDriver(text='请输入银行账号')) text('1234567890123') mobileDriver(text='对公银行账号').click() waiteForClick(mobileDriver(text='获取验证码')) while 1: message = getPhoneMessage().get("loanMes") if message is None: sleep(0.5) continue else: break waiteForClick(mobileDriver(textMatches='重新获取.*').parent().child()) text(message.strip().strip('"')) waiteForClick(mobileDriver(text='验证码')) waiteForClick(mobileDriver(text='确定')) logger.info('借款申请页面') waiteForClick(mobileDriver(text='请选择收款银行账号')) waiteForClick(mobileDriver(text='1234567890123')) waiteForClick(mobileDriver(text='请输入借款金额')) text('100000') mobileDriver(text='请输入借款期限').click() mobileDriver(text='请输入借款期限').click() text('8') waiteForClick(mobileDriver(text='借款金额')) waiteForClick(mobileDriver(text='请具体描述详细借款用途')) text('借钱还账') waiteForClick(mobileDriver(text='还款方式')) waiteForClick(mobileDriver(text='我已阅读并同意提交资料').child()[2]) waiteForClick(mobileDriver(text='提交借款申请')) getVerification() while True: flg = mobileDriver(text='安全认证中').exists() if flg: break else: sleep(1) continue while True: flg = mobileDriver(text='安全认证中').exists() if flg: continue else: sleep(1) break waiteForClick(mobileDriver(name='com.tencent.mm:id/dc')) waiteForClick(mobileDriver(name='com.tencent.mm:id/dc')) loanCheck_bank(driver_bank) loanCheck_Risk(driver_risk) if runMode == 'UI': # 去缴费 goToPay(driver_forward) else: waiteForClick(mobileDriver(text='我的借款')) waiteForClick(mobileDriver(text='去缴纳')) sleep(2) logger.info('还款申请页面') mobileDriver(text='担保费').drag_to(mobileDriver(text='缴费申请'), 0.5) waiteForClick(mobileDriver(text='上传担保费缴费凭证')) mobileDriver("android.widget.LinearLayout").offspring("com.tencent.mm:id/dm6").child("com.tencent.mm:id/f4b")[ 1].child( "com.tencent.mm:id/dm8").click() waiteForClick(mobileDriver(text='完成')) waiteForClick(mobileDriver(text='提交申请')) sleep(2) logger.info('还款申请完成页面') waiteForClick(mobileDriver(name='com.tencent.mm:id/dc')) waiteForClick(mobileDriver(name='com.tencent.mm:id/dc')) # 担保费审核 costAudit(driver_risk) # 银行放款审核 loanReview(driver_bank) if runMode == 'UI': # 还款申请 toRepay(driver_forward) else: waiteForClick(mobileDriver(text='我的')) waiteForClick(mobileDriver(text='我的借款')) sleep(1) waiteForClick(mobileDriver(text='我要还款')) sleep(1) waiteForClick(mobileDriver(text='请选择')) sleep(1) waiteForClick(mobileDriver(text='鞍山银行')) waiteForClick(mobileDriver(text='请输入')) text('123456789012') waiteForClick(mobileDriver(text='还款银行账号')) mobileDriver(text='合计金额').drag_to(mobileDriver(text='还款申请'), 0.5) waiteForClick(mobileDriver(text='上传还款凭证')) mobileDriver("android.widget.LinearLayout").offspring("com.tencent.mm:id/dm6").child("com.tencent.mm:id/f4b")[ 1].child( "com.tencent.mm:id/dm8").click() waiteForClick(mobileDriver(text='完成')) waiteForClick(mobileDriver(type='android.widget.CheckBox')) waiteForClick(mobileDriver(text='提交申请')) # 银行还款审核 replayCheck_Bank(driver_bank)