def get_code(verify_type): if self(resourceId="com.chinamworld.main:id/native_graph_iv").exists( timeout=20): self(resourceId="com.chinamworld.main:id/native_graph_iv").click() print("开始识别验证码了") info = self(resourceId="com.chinamworld.main:id/native_graph_iv").info x = info['bounds']['left'] y = info['bounds']['top'] img = "verification.jpg" self.screenshot(img) if verify_type == "ai": vc = VerificationCodeCcb(x, y, 313, 165, img) code = vc.image_str() ai_verify_code(code) else: vc = VerificationCodeCcbManually(x, y, 313, 165, img) vc.image_str() post_server_code(img) elif self(text="收款账户").exists(timeout=10): status_api(trans.order_id, 0) time.sleep(20) success() print("您已经转账成功了!") # do_transaction() settings.bot.post_sms_already = False else: false_msg("短信超时") print("您已经转账超时了!正在为您返回首页!") close_win() back_activity() back_activity() settings.bot.post_sms_already = False
def do_transfer(transferee): # if remove_float_win(): print( self(resourceId="com.android.bankabc:id/scrolltv").exists(timeout=10)) if self(resourceId="com.android.bankabc:id/scrolltv").exists(timeout=10): self(resourceId="com.android.bankabc:id/scrolltv").click() time.sleep(5) self(resourceId="inputBox").click() self(resourceId="inputBox", focused=True).set_text("转账") # self.send_keys("转账", clear=True) time.sleep(10) print("come in") self(description="转账").click() waitTransferHomeAct = change_activity( "com.alipay.mobile.nebulacore.ui.H5Activity") if waitTransferHomeAct: trans.order_id = transferee.order_id trans.amount = transferee.amount trans.account = transferee.account # trans.holder = transferee.holder trans.holder = "徐绣策" trans.bank_name = transferee.bank_name status_api(trans.order_id, 0) print(">>>>>>>>>---------------> trans.order_id success") self.xpath( '//android.webkit.WebView/android.view.View[1]/android.view.View[1]' ).click() login() return input_form()
def input_form(): print("准备为您填充表单!") SmartTransferMainAct = change_activity( "com.ccb.transfer.smarttransfer.view.SmartTransferMainAct") if SmartTransferMainAct: self(resourceId="com.chinamworld.main:id/et_cash_name").click() self(resourceId="com.chinamworld.main:id/et_cash_name").set_text( trans.holder) self(resourceId="com.chinamworld.main:id/et_collection_account").click( ) self(resourceId="com.chinamworld.main:id/et_collection_account" ).set_text(trans.account) self.press("back") self(resourceId="com.chinamworld.main:id/tv_transfer_way").click() if self(text="实时转账").exists(timeout=120): self(resourceId="com.chinamworld.main:id/bottom_selector_tv", text="实时转账").click() if self(resourceId="com.chinamworld.main:id/et_tran_amount" ).exists(timeout=10): self(resourceId="com.chinamworld.main:id/et_tran_amount" ).click() self.send_keys(str(trans.amount), clear=True) self.press("back") # 附言 # self(resourceId="com.chinamworld.main:id/rl_tran_mark").click() # self.send_keys("今天发的1元钱", clear=True) # self.press("back") self(resourceId="com.chinamworld.main:id/tv_bank").click() if self(text="热门银行").exists(timeout=120): bank_btn = self(resourceId="com.chinamworld.main:id/title", text=trans.bank_name) if bank_btn.click_gone(maxretry=120, interval=1.0): self(resourceId="com.chinamworld.main:id/btn_right1" ).click() if self(resourceId="com.chinamworld.main:id/dlg_right_tv" ).exists(timeout=10): self(resourceId="com.chinamworld.main:id/dlg_right_tv" ).click() if self(resourceId="com.chinamworld.main:id/et_code" ).exists(timeout=5): print("等待验证码") else: self( resourceId="com.chinamworld.main:id/btn_right1" ).click() elif self( resourceId="com.chinamworld.main:id/tv_dlg_content" ).exists(timeout=10): self.xpath( '//android.widget.FrameLayout[1]/android.widget.LinearLayout[' '1]/android.widget.FrameLayout[1]/android.widget.LinearLayout[' '1]/android.widget.LinearLayout[1]').click() time.sleep(2) back_activity() back_activity() print("go back ----->") status_api(trans.order_id, 1, "查询账户开户机构不成功。")
def input_form(): print("准备为您填充表单!") if self(resourceId="com.icbc:id/icon_txt", text="转账汇款").exists(timeout=20): self(resourceId="com.icbc:id/icon_txt", text="转账汇款").click() if self(resourceId="ebdp-pop-ad-fork2").exists(timeout=10): self(resourceId="ebdp-pop-ad-fork2").click() self.xpath( '//*[@resource-id="abs_pos_1"]/android.view.View[1]/android.view.View[2]/android.view.View[' '1]/android.widget.TextView[1]').click() if self(resourceId="accountname").exists(timeout=20): time.sleep(3) self(resourceId="accountname").click() self(resourceId="accountname", focused=True).set_text(trans.holder) time.sleep(3) self(resourceId="cardnum").click() self(resourceId="cardnum", focused=True).set_text(trans.account) time.sleep(3) self(resourceId="clearBtn_parent").click() time.sleep(3) self.send_keys(trans.amount, clear=True) # for i in trans.amount: # self(text=i).click() # self.press("back") self(text="下一步").click() time.sleep(3) switcher = { 0: [0.498, 0.953], 1: [0.168, 0.765], 2: [0.498, 0.764], 3: [0.828, 0.763], 4: [0.166, 0.829], 5: [0.494, 0.827], 6: [0.836, 0.825], 7: [0.164, 0.89], 8: [0.5, 0.889], 9: [0.832, 0.89], } passwd = list(settings.bot.account.payment_pwd) for letter in passwd: btn_xy = switcher.get(int(letter), "Invalid key") self.click(btn_xy[0], btn_xy[1]) if self(text="款项已经汇入收款人账户。").exists(timeout=30): print("您已经转账成功了!") status_api(trans.order_id, 0) back_activity() back_activity() return True else: return False
def get_code(): img = "verification.jpg" self.screenshot(img) vc = VerificationCodeAbc(x, y, width, height, img) code = list(str(vc.image_str())) passwd = list(settings.bot.account.payment_pwd) print( "<----------------------keyboard_arr passwd_arr-------------------------->" ) print(code) print(passwd) # settings.count += 1 # print(settings.count) switcher = { 0: [0.162, 0.76], 1: [0.494, 0.758], 2: [0.842, 0.766], 3: [0.168, 0.827], 4: [0.494, 0.825], 5: [0.834, 0.825], 6: [0.168, 0.884], 7: [0.498, 0.893], 8: [0.824, 0.89], 9: [0.49, 0.949], } for i in passwd: print("i", i) for j in code: print("j", j) if i == j: print("match", j) key_inx = code.index(j) btn_xy = switcher.get(int(key_inx), "Invalid key") self.click(btn_xy[0], btn_xy[1]) if self(description="转账已受理").exists(timeout=60): print("您已经转账成功了!") status_api(trans.order_id, 0) back_activity() back_activity() back_activity() else: if self(resourceId="btn_cancel").exists(timeout=5): self(resourceId="btn_cancel").click() # put_code() get_code()
def post_sms(sms): if settings.post_sms_already: return if self(resourceId="com.nxy.mobilebank.gx:id/et_sms").exists(timeout=5): self(resourceId="com.nxy.mobilebank.gx:id/et_sms").click() settings.post_sms_already = True else: return if self(resourceId="com.nxy.mobilebank.gx:id/et_sms").exists(timeout=5): self(resourceId="com.nxy.mobilebank.gx:id/et_sms").click() self.send_keys(sms, clear=True) print(settings.bot.account.payment_pwd) self(resourceId="com.nxy.mobilebank.gx:id/et_trade_password").click() for i in settings.bot.account.payment_pwd: time.sleep(1) self(text=i).click() time.sleep(2) self(resourceId="com.nxy.mobilebank.gx:id/bt_confirm").click() success() else: status_api(trans.order_id, 1, "查询账户开户机构不成功。")
def false_msg(msg="网络异常"): status_api(trans.order_id, 1, msg)
def put_code(): # y = None # width = 0 self(description="下一步").click() if self(description="确定").exists(timeout=10): self(description="确定").click() self(description="确认").click() if self(text="8位密码").exists(timeout=50): u_key_pwd = settings.bot.account.key_pwd self(text="a").click() self.send_keys(u_key_pwd, clear=True) time.sleep(5) # self(text="123").click() # for key in u_key_pwd: # time.sleep(1) # self(text=key).click() # self.send_keys("aa168168", clear=True) self(text="确定").click() print("您已经转账成功了!") status_api(trans.order_id, 0) time.sleep(10) res = requests.post(url=settings.pc_url + '/press', json=settings.presser) body = json.loads(res.text) if body["code"] == 0: if self(description="转账已受理").exists(timeout=180): print("您已经转账成功了!") status_api(trans.order_id, 0) back_activity() back_activity() back_activity() back_activity() else: button_height = 179 # self(description="下一步").click() # self(description="确认").click() time.sleep(5) info = self(resourceId="CFCA_KEYBOARD_0").info print("-------------------------------->") print(info) x = info['bounds']['left'] y = info['bounds']['top'] width = int(info['bounds']['right']) height = button_height * 4 def get_code(): img = "verification%s.jpg" % settings.count self.screenshot(img) vc = VerificationCodeAbc(x, y, width, height, img) code = list(str(vc.image_str())) passwd = list(settings.bot.account.payment_pwd) print( "<----------------------keyboard_arr passwd_arr-------------------------->" ) print(code) print(passwd) settings.count += 1 print(settings.count) # for i in passwd: # print("i", i) # for j in code: # print("j", j) # if i == j: # print("match", j) # key_inx = code.index(j) # switcher = { # 0: [0.162, 0.76], # 1: [0.494, 0.758], # 2: [0.842, 0.766], # 3: [0.168, 0.827], # 4: [0.494, 0.825], # 5: [0.834, 0.825], # 6: [0.168, 0.884], # 7: [0.498, 0.893], # 8: [0.824, 0.89], # 9: [0.49, 0.949], # } # jxy = switcher.get(key_inx, "Invalid key") # time.sleep(1) # print("<----------------------jx jy-------------------------->") # print(jxy[0]) # print(jxy[1]) # self.click(jxy[0], jxy[1]) get_code() if self(resourceId="btn_cancel").exists(timeout=5): self(resourceId="btn_cancel").click() # put_code() get_code() # elif self(resourceId="com.alipay.mobile.antui:id/message").exists(timeout=5): # self(resourceId="com.alipay.mobile.antui:id/ensure").click() # get_code() else: print("您已经转账成功了!") status_api(trans.order_id, 0) do_transaction()
def success(): if self(resourceId="com.nxy.mobilebank.gx:id/btn_back").exists( timeout=120): self(resourceId="com.nxy.mobilebank.gx:id/btn_back").click() status_api(trans.order_id, 0)