def loginOM(env='c', username='', passwoard='', **bro): chrome_option = webdriver.ChromeOptions() chrome_option.add_argument('disable-infobars') browser = webdriver.Chrome( options=chrome_option) if not bro else bro['bro'] codeurl = f"{OMdomainDic[env]}/securityCode/imageCaptcha" browser.maximize_window() browser.get(f'{OMdomainDic[env]}/admin/custom/index/htm') username = username if username else countOM[env]['usernameOM'] passwoard = passwoard if passwoard else countOM[env]['passwordOM'] while True: cookie_without_login = "******".join([ item["name"] + "=" + item["value"] for item in browser.get_cookies() ]) browser = waitTo(browser, SCENSEE, way='id', name='username', operate='click') usernamename = browser.find_element_by_id('username') usernamename.clear() usernamename.send_keys(username) try: passwordname = browser.find_element_by_id('password-self') except SCENSEE: passwordname = browser.find_element_by_id('password') passwordname.click() passwordname.clear() time.sleep(1) keyInput(passwoard) codename = browser.find_element_by_id('securityCode') code = GetcodePicOM(cookie_without_login, codeurl) codename.clear() codename.send_keys(code) browser.find_element_by_xpath( '/html/body/div[2]/form/div[6]/button').click() time.sleep(1) try: browser.find_element_by_id('securityCode') except SCENSEE: break cookieLogined = ";".join( [item["name"] + "=" + item["value"] for item in browser.get_cookies()]) saveCookie(cookieLogined, f'OM_{env}') return browser, cookieLogined
def addOperator(opLoginID,env,newRole=1,**bro): initialPWD='qqq111' convertIdDic={'k':'10032','c':'10032','p':'97','s':'97'} chrome_option=webdriver.ChromeOptions() chrome_option.add_argument('disable-infobars') browser=webdriver.Chrome(options=chrome_option) if not bro else bro['bro'] if newRole:#新增角色 browser.get(f'{domainDic[env]}/user/roleManage?sup_menu=navItem6&sub_menu=-user-roleManage&convertId={convertIdDic[env]}')#进入角色管理页面 browser=waitTo(browser,SCENSEE,way='css',name='#priv-query-form>table>tbody>tr>td:nth-child(6)>button',operate='click')#点击新增角色 browser=waitTo(browser,SCENSEE,way='id',name='operateRoleName',operate='send_keys',value='操作员')#输入操作员名称 if env=='k': browser.find_element_by_id('tree_25004_anchor').click()#勾选 browser.find_element_by_id('tree_99011_anchor').click()#勾选 browser.find_element_by_id('tree_10002_anchor').click()#勾选 browser.find_element_by_id('tree_31055_anchor').click()#勾选 browser.find_element_by_id('tree_46018_anchor').click()#勾选 browser.find_element_by_id('tree_10003_anchor').click()#勾选 browser.find_element_by_id('tree_10004_anchor').click()#勾选 browser.find_element_by_id('tree_10005_anchor').click()#勾选 elif env=='c': browser.find_element_by_id('tree_25004_anchor').click()#勾选 browser.find_element_by_id('tree_92011_anchor').click()#勾选 browser.find_element_by_id('tree_10002_anchor').click()#勾选 browser.find_element_by_id('tree_31055_anchor').click()#勾选 browser.find_element_by_id('tree_46018_anchor').click()#勾选 browser.find_element_by_id('tree_10003_anchor').click()#勾选 browser.find_element_by_id('tree_10004_anchor').click()#勾选 browser.find_element_by_id('tree_10005_anchor').click()#勾选 elif env in 'ps': browser.find_element_by_id('tree_7017_anchor').click()#勾选 browser.find_element_by_id('tree_40020_anchor').click()#勾选 browser.find_element_by_id('tree_67_anchor').click()#勾选 browser.find_element_by_id('tree_9016_anchor').click()#勾选 browser.find_element_by_id('tree_23031_anchor').click()#勾选 browser.find_element_by_id('tree_68_anchor').click()#勾选 browser.find_element_by_id('tree_69_anchor').click()#勾选 browser.find_element_by_id('tree_70_anchor').click()#勾选 browser.find_element_by_id('operateBtn').click()#点击增加 browser,text=waitTo(browser,SCENSEE,way='css',name='body>div.message_mask>div.message>div.message_msg',operate='getText') if text=='角色增加成功': browser=waitTo(browser,SCENSEE,way='css',name='body>div.message_mask>div.message>div.message_head>a',operate='click') elif text=='操作失败,角色数据已存在!': pass else: print('新增角色失败!') os.system('pause') browser.get(f'{domainDic[env]}/user/manage')#进入操作员管理页面 browser=waitTo(browser,SCENSEE,way='id',name='addUserBtn',operate='click')#点击用户新增 browser.find_element_by_id('operateUserCode').send_keys(opLoginID)#输入用户名 browser.find_element_by_id('operateUserName').send_keys(fake.name()) browser.find_element_by_id('operateCertNbr').send_keys(fake.ssn()) browser.find_element_by_id('operateMobile').send_keys(fake.phone_number()) browser.find_element_by_id('operateEmail').send_keys(fake.email()) browser.find_element_by_id('certTypeselected').click()#点击证件类型 browser.find_element_by_css_selector('#certType_combobox_ul>li:nth-child(2)').click()#点击身份证 browser.find_element_by_id('genderselected').click()#点击性别 browser.find_element_by_css_selector('#gender_combobox_ul>li:nth-child(2)').click()#点击男 flag=1 while True: if flag: browser.find_element_by_id('password-self').click()#点击密码输入框 else: browser.find_element_by_id('password').click()#点击密码输入框 time.sleep(0.5) keyInput(initialPWD) time.sleep(0.5) if flag: browser.find_element_by_id('password2-self').click()#点击密码输入框 else: browser.find_element_by_id('password2').click()#点击密码输入框 time.sleep(0.5) keyInput(initialPWD) time.sleep(0.5) if flag: browser.find_element_by_id('showRoleBtn').click()#点击分配角色 time.sleep(0.5) browser=waitTo(browser,SCENSEE,way='xpath',name="//td[text()='操作员']/preceding-sibling::td[1]/div/span/input",operate='click')#勾选第一个角色 time.sleep(0.5) browser.find_element_by_css_selector('#roleDiv>div.user_sub_title>div:nth-child(2)>button').click()#点击确定 time.sleep(0.5) flag=0 browser=waitTo(browser,SCENSEE,way='id',name='operateBtn',operate='click')#点击增加 browser,text=waitTo(browser,SCENSEE,way='css',name='body>div.message_mask>div.message>div.message_msg',operate='getText') if text=='操作成功': browser=waitTo(browser,SCENSEE,way='css',name='body>div.message_mask>div.message>div.message_head>a',operate='click') return browser,initialPWD elif text=='两次输入密码不一致': browser=waitTo(browser,SCENSEE,way='css',name='body>div.message_mask>div.message>div.message_head>a',operate='click') continue else: print('新增操作员失败!') os.system('pause') time.sleep(3)
def paying(browser, amount, username='******', password='******', payword='*', env='c'): username = username if username else '*' password = password if password else '*' payword = payword if payword else '*' env = env if env else 'c' # browser.switch_to.window(browser.window_handles[-1]) print('付款方:', username) browser = switchTag_URL(browser, 'payment_plugin') browser = waitTo(browser, SCENSEE, way='id', name='iousPay', operate='click', value='') #点击白条支付 browser.find_element_by_id('loginCode').send_keys(username) browser.find_element_by_id('logon').click() #点击后元素ID会变 browser = waitTo(browser, (SCENSEE, SCEENIE), way='id', name='password', operate='click', value='') #点击密码框 # browser.find_element_by_id('password').click() time.sleep(1) flag = 4 while flag: keyInput(password) time.sleep(1) browser.find_element_by_id('logon').click() if '密码错误' in browser.find_element_by_id('prompt_logonResult').text: flag -= 1 browser.find_element_by_id('password').click() time.sleep(1) for i in range(10): keyInput('backspace') continue else: break browser = waitTo(browser, (SCENSEE, SCEENIE, SCEECIE, SCEENVE), way='id', name='iousAmount', operate='send_keys', value=str(int(amount) / 100)) browser.find_element_by_id('password4pay-self').click() #点击支付密码框,聚焦 keyInput(payword) time.sleep(1) browser.find_element_by_id('next').click() while True: #判断是否支付成功 browser = switchTag_URL(browser, 'iousPayAllocate') browser, tipText = waitTo(browser, SCENSEE, way='class', name='tip-desc', operate='getText', value='') if '失败' in tipText: browser.find_element_by_css_selector('[value="关 闭"]').click() browser = switchTag_URL(browser, 'payment_plugin') browser.find_element_by_css_selector('[value="支付遇到问题"]').click() browser.find_element_by_css_selector('[value="重新支付"]').click() browser.find_element_by_id('iousPay').click() #点击白条支付 browser = waitTo(browser, (SCENSEE, SCEENIE, SCEECIE, SCEENVE), way='id', name='iousAmount', operate='send_keys', value=str(int(amount) / 100)) time.sleep(2) browser.find_element_by_id( 'password4pay-self').click() #点击支付密码框,聚焦 keyInput(payword) time.sleep(1) browser.find_element_by_id('next').click() continue else: while True: #获取订单号 try: orderCode = browser.find_element_by_class_name( 'order_info').find_element_by_tag_name('p').text print(orderCode) break except SCENSEE: time.sleep(1) continue break browser = switchTag_URL(browser, 'haiermoney') num = len(browser.find_elements_by_tag_name('a')) for i in range(num): browser.find_elements_by_tag_name('a')[i].click() time.sleep(1) browser.back() time.sleep(0.5) if env in ['c', 'k']: browser = waitTo(browser, SCENSEE, way='css', name='.agree_check', operate='click', value='') #勾选同意 browser = waitTo(browser, SCENSEE, way='css', name='.btn_signing', operate='click', value='') #点击下一步 if env in ['c', 'k']: smsCode = 1234 elif env in ['p', 's']: browser = waitTo(browser, SCENSEE, way='id', name='yzm', operate='click', value='') #点击发送短信验证码 smsCode = input('请输入短信验证码:') browser = waitTo(browser, SCENSEE, way='id', name='yz_num', operate='send_keys', value=smsCode) #输入短信验证码 browser.find_element_by_css_selector( 'body > div > div > div > div > button').click() #确认签署 os.system('pause')
def loginMC(username='', passwoard='', env='c', **bro): if not bro: chrome_option = webdriver.ChromeOptions() chrome_option.add_argument('disable-infobars') browser = webdriver.Chrome(options=chrome_option) browser.implicitly_wait(5) else: browser = bro['bro'] loginurl = f'{MCdomainDic[env]}/loginface.html' codeurl = f'{MCdomainDic[env]}/verify/getVerifyCode' username = username if username else countMC[env]['usernameMC'] passwoard = passwoard if passwoard else countMC[env]['passwordMC'] flag = 1 while flag: flag = 0 browser.get(loginurl) cookie_without_login = "******".join([ item["name"] + "=" + item["value"] for item in browser.get_cookies() ]) inputusername = browser.find_element_by_id('username') inputusername.clear() inputusername.send_keys(username) inputusername.send_keys(Keys.TAB * 3) time.sleep(1) keyInput(passwoard) codename = browser.find_element_by_id('validateCode') while 1: code = GetcodePic(cookie_without_login, loginurl, codeurl) try: codename.send_keys(code) except SCESERE: #报错说明已登录成功 cookieList = list( map( lambda k_v: dict(zip(['name', 'value'], k_v.split('=')) ), ";".join([ item["name"] + "=" + item["value"] for item in browser.get_cookies() ]).split(';'))) cookieLogined = ';'.join( f"{cookieDic['name']}={cookieDic['value']}" for cookieDic in cookieList) saveCookie(cookieLogined, f'MC_{env}') return browser, cookieLogined browser.find_element_by_css_selector( 'button.btn.btn-primary.btn-lg.btn-block').click() #点击登陆 time.sleep(1) try: if browser.find_element_by_id('messageErr').text == '验证码错误': continue elif '密码' in browser.find_element_by_id('messageErr').text: flag = 1 break except selenium.common.exceptions.NoSuchElementException: pass while True: if 'homepage' in browser.current_url: cookieList = list( map( lambda k_v: dict( zip(['name', 'value'], k_v.split('='))), ";".join([ item["name"] + "=" + item["value"] for item in browser.get_cookies() ]).split(';'))) cookieLogined = ';'.join( f"{cookieDic['name']}={cookieDic['value']}" for cookieDic in cookieList) saveCookie(cookieLogined, f'MC_{env}') return browser, cookieLogined else: # print(browser.current_url) time.sleep(1)
def login(username='******', passwd='*', env='c', menhuPath='', **bro): chrome_option = webdriver.ChromeOptions() chrome_option.add_argument('disable-infobars') browser = webdriver.Chrome( options=chrome_option) if not bro else bro['bro'] loginurl = f'{loginDomainDic[env]}/login?service={domainDic[env]}/login.do?method=login' codeurl = f"{loginDomainDic[env]}/vimage.do" browser.maximize_window() browser.implicitly_wait(5) flag = 0 while True: flag += 1 browser.get(loginurl) cookie_without_login = "******".join([ item["name"] + "=" + item["value"] for item in browser.get_cookies() ]) inputusername = browser.find_element_by_id('username') inputusername.clear() inputusername.send_keys(username) try: inputpassword = browser.find_element_by_id('loginpwd-self') except SCENSEE: continue browser.find_element_by_id("username").send_keys(Keys.TAB) time.sleep(1) keyInput(passwd) codename = browser.find_element_by_id('verifyCode') code = GetcodePic(cookie_without_login, loginurl, codeurl) codename.clear() codename.send_keys(code) ############################################################################# while 1: if flag == 1: browser.find_element_by_id('sendSmsBtn').click() smstip = browser.find_element_by_id( 'sendSmsBtn').get_attribute('value') if '已发送' in smstip: break else: time.sleep(1) else: smstip = browser.find_element_by_id( 'sendSmsBtn').get_attribute('value') if '再次' in smstip: browser.find_element_by_id('sendSmsBtn').click() time.sleep(1) smstip = browser.find_element_by_id( 'sendSmsBtn').get_attribute('value') if '已发送' in smstip: break else: time.sleep(1) else: time.sleep(1) if env in 'kc': time.sleep(2) phoneNumber = getTel(username, path=menhuPath) smsCode = getSMScode(phoneNumber, waiteSec=2, menhuPath=menhuPath) else: if menhuPath: sendInput('请发送短信验证码,格式:验证码 xxxx') smsCode = getInput('验证码') else: smsCode = input('输入验证码:') try: browser.find_element_by_id('smsCode').send_keys(smsCode) except SCEUAPE: print(browser.switch_to.alert.text) browser.switch_to.alert.accept() continue ############################################################################# browser.find_element_by_id('login_button').click() time.sleep(5) try: if browser.find_element_by_id('login_button'): continue except SCENSEE: break except SCEUAPE: continue cookie_with_login = "******".join( [item["name"] + "=" + item["value"] for item in browser.get_cookies()]) return browser
def changePassword(username, password, newpassword='******', paypassword='******', env='c', **bro): browser = login(username, password, env, **bro) time.sleep(2) n = 0 while 1: browser.find_element_by_id('operateBtn').click() #提交,点击提交后元素id会变 time.sleep(1) try: browser.find_element_by_xpath( '/html/body/div[2]/div[2]/div[1]/a').click() #关闭弹窗 except SCENSEE: pass time.sleep(1) browser.find_element_by_id('oldPassword').click() time.sleep(1) keyInput(password) #旧密码 browser.find_element_by_id('newPassword').click() time.sleep(1) keyInput(newpassword) #新密码 browser.find_element_by_id('newPassword2').click() time.sleep(1) keyInput(newpassword) #确认新密码 time.sleep(1) browser.find_element_by_id('operateBtn').click() #提交 time.sleep(1) if '修改成功' in browser.find_element_by_xpath( '/html/body/div[2]/div[2]/div[2]').text: browser.find_element_by_xpath( '/html/body/div[2]/div[2]/div[1]/a').click() #关闭弹窗 break else: browser.find_element_by_xpath( '/html/body/div[2]/div[2]/div[1]/a').click() #关闭弹窗 browser.refresh() time.sleep(1) continue n += 1 if n == 5: input('自动修改密码失败,请手动修改密码和支付密码后按回车:') return browser time.sleep(1) browser.find_element_by_id('operateBtn').click() #转去支付密码页面 #/user/securityPayPswUpdate time.sleep(1) browser.find_element_by_id('operateBtn').click() #提交 time.sleep(1) browser.find_element_by_xpath( '/html/body/div[2]/div[2]/div[1]/a').click() #关闭弹窗 n = 0 while 1: time.sleep(1) browser.find_element_by_id('password').click() time.sleep(1) keyInput(paypassword) #新密码 browser.find_element_by_id('password2').click() time.sleep(1) keyInput(paypassword) # while_ture(browser.find_element_by_id,'operateBtn') browser = waitTo(browser, (SCENSEE, SCEECIE, SCEENIE), way='id', name='operateBtn', operate='click') time.sleep(1) try: browser.find_element_by_xpath( '/html/body/div[2]/div[2]/div[1]/a').click() continue except SCENSEE: break n += 1 if n == 5: input('自动修改密码失败,请手动修改支付密码后按回车:') return browser return browser