def run(): mysql = Mysql() sql, val = mysql.select_sql(tb=TB_INFO, sel="COUNT(*) as c", cond={"status": 3}) res = mysql.getOne(sql, val) if res['c']: Selvisa() else: print('没有数据, 等待中...', strftime('%m/%d %H:%M:%S'))
def run(): while 1: mysql = Mysql() # def select_sql(self, tb, sel="*", cond=None, param="") sql, val = mysql.select_sql(tb=TB_INFO, sel="COUNT(*) as c", cond={"status": 8}) res = mysql.getOne(sql, val) if res["c"]: ic = Implement_class(112) ic.main() else: print('没有数据, 等待中...', strftime('%m/%d %H:%M:%S')) time.sleep(10) os.system("cls")
class Selvisa(huilian_selenium.Huilian): mysql = Mysql() tb = 'dc_business_thailand_setting' def __init__(self, app_id=""): print(app_id) pass def pageSuc(self): # 保存状态至数据库 v_t_list = [('BJS', '北京'), ('TNA', '济南'), ('XIY', '西安'), ('SHA', '上海'), ('HGH', '杭州'), ('NKG', '南京'), ('CAN', '广州'), ('SZX', '深圳'), ('FOC', '福州'), ('CNG', '成都'), ('CKG', '重庆'), ('KMG', '昆明'), ('WUH', '武汉'), ('CSX', '长沙'), ('SHE', '沈阳')] for k, v in v_t_list: print(f'正在更新的是:{v}') update_data = { "status": 11, "mpid": 44, "type": "法国领区", "china_name": v, "english_name": v, "china_value": k, "english_value": k, } sqls = self.asql.insert_sql(tb=self.tb, **update_data) self.asql.update(*sqls) sleep(1) # 数据库操作 @property def asql(self): return Mysql()
def run(): while 1: mysql = Mysql() # def select_sql(self, tb, sel="*", cond=None, param="") #sql ----'SELECT COUNT(*) as c FROM dc_business_australia_info_eng WHERE status=%s ' #val---[1] status 的值 #"dc_business_australia_info_eng" 个人信息表. sql, val = mysql.select_sql(tb=TB_INFO, sel="COUNT(*) as c", cond={"status": 1}) #查询 status 是1 的所有数据,取第一条. res = mysql.getOne(sql, val) #c 是查出来的值 count(*) as c status 为1 的个数。 if res["c"]: ic = Implement_class(112) ic.main() else: print('没有数据, 等待中...', strftime('%m/%d %H:%M:%S')) time.sleep(10) os.system("cls")
class Selvisa(huilian_selenium.Huilian): mysql = Mysql() _tb_info = "dc_business_australia_info_eng" _tb_infoC = "dc_business_australia_info" _tb_visa = "dc_business_visa_account" def __init__(self, app_id=""): sql, val = self.asql.select_sql( tb=self._tb_info, cond={"status": 3} if not app_id else {"id": app_id}) self.app = self.asql.getOne(sql, val) self.download_path = os.path.join(settings.BASEDIR, 'files') if os.path.isdir(self.download_path): shutil.rmtree(self.download_path) self.initParmar() # 设置 chrome_options 属性 chrome_options = webdriver.ChromeOptions() # 设置浏览器窗口大小 chrome_options.add_argument('window-size=1800x2000') # 无界面 chrome_options.add_argument('--headless') # 不加载图片 chrome_options.add_argument('blink-settings=imagesEnabled=false') chrome_options = huilian_selenium.chromeOptions(noWin=True, noImg=True, pdf=True) self.driver = webdriver.Chrome(chrome_options=chrome_options) self.driver.maximize_window() super().__init__(driver=self.driver) self.Login() # 信息,参数 def initParmar(self): try: self.id = self.app['id'] self.mpid = self.app['mpid'] self.application_id = self.app['application_id'] self.fullName = self.app["username"].strip() # 全名 - 中 self.application_status = self.app['application_status'] # visa_account 信息 visa_account = self.asql.getOne(*self.asql.select_sql( tb=self._tb_visa, cond={"mpid": self.mpid})) # if visa_account['email_status'] == 1: # self.userName = visa_account['official_account'] # 登陆账号 # self.password = visa_account['official_account_pass'] # 登陆密码 # else: self.userName = '******' self.password = '******' except Exception as e: pass print(e) # 登录页面 def Login(self): print('进入登录页面...') try: # get方法会一直等到页面加载,然后才会继续程序,通常测试会在这里选择# sleep(2) self.open("https://online.immi.gov.au/lusc/login") sleep(2) # 输入登陆用户名 self.send_keys((By.NAME, 'username'), self.userName) # 输入登陆密码 self.send_keys((By.NAME, 'password'), self.password) self.click((By.NAME, 'login')) if ">An error has occurred<" in self.page: return 0 else: pass self.click((By.NAME, 'continue'), 2) self.send_keys((By.NAME, 'i_instantSearchFld'), self.application_id) self.click((By.NAME, 'btn_perform_instant_srch'), 2) if 'defaultActionPanel_0_3' in self.page: update_data = { "status": 5, "application_status": 5, "utime": int(time()) } sqls = self.asql.update_sql(tb=self._tb_info, cond={"id": self.app["id"]}, **update_data) sqlc = (sqls[0].replace(self._tb_info, self._tb_infoC), sqls[1]) self.asql.update(*sqls) self.asql.update(*sqlc) sleep(1) self.click((By.ID, 'defaultActionPanel_0_3'), 3) self.pageSuc() pass except Exception as e: print(e) self.quit() pass def pageSuc(self): print(f"进入付款成功页面") try: text = self.page text_required = text[text.rfind('Application home'):] text_required = text_required[text_required.find('<div id'):] requiredId = pub.get_reg_value(r'(?<=div id=").*?(?=")', text_required) requirexp = f"//*[@id='{requiredId}']/div/div[2]/div/div/div" # 判断文件夹是否存在,如果没有则创建 if not os.path.exists(self.download_path): os.mkdir(self.download_path) sleep(10) # 个人信息表,下载PDF文档 self.click((By.XPATH, f'{requirexp}/table/tbody/tr[1]//a'), 2) sleep(6) # 文件名字 info_name = self.download_path + '\\visa.pdf' # 文件重命名 os.rename(os.path.join(self.download_path, 'Application'), info_name) sleep(1) # 浏览器开的窗口总数,下标从0开始 windows = self.driver.window_handles # 去第二个窗口 self.driver.switch_to.window(windows[1]) # 关闭当前窗口 self.close() sleep(1) my_info_url = requests.post( "https://visa.dllm.cn/index.php?s=/Business/Pcapi/insertpdf", files={ "file": ("visa.pdf", open(info_name, 'rb'), "application/pdf") }, timeout=10).json() update_data = {"my_info_url": my_info_url, "utime": int(time())} sqls = self.asql.update_sql(tb=self._tb_info, cond={"id": self.app["id"]}, **update_data) sqlc = (sqls[0].replace(self._tb_info, self._tb_infoC), sqls[1]) self.asql.update(*sqls) self.asql.update(*sqlc) sleep(1) return 0 except Exception as e: print(e) self.quit() pass return 1 # 数据库操作 @property def asql(self): return Mysql()
def asql(self): return Mysql()
class Selvisa(huilian_selenium.Huilian): mysql = Mysql() _tb_info = "dc_business_australia_info_eng" _tb_infoC = "dc_business_australia_info" _tb_visa = "dc_business_visa_account" def __init__(self, app_id=""): sql, val = self.asql.select_sql( tb=self._tb_info, cond={"status": 5} if not app_id else {"id": app_id}) self.app = self.asql.getAll(sql, val) for i in self.app: self.id = i['id'] self.application_id = i['application_id'] self.mpid = i['mpid'] self.fullName = i["username"].strip() # 全名 - 中 self.firstEName = i["english_name"].strip() # 姓 - 英 self.lastEName = i["english_name_s"].strip() # 名 - 英 self.application_status = i['application_status'] self.download_path = os.path.join(settings.BASEDIR, 'files') if os.path.isdir(self.download_path): shutil.rmtree(self.download_path) self.initParmar() # 设置 chrome_options 属性 chrome_options = webdriver.ChromeOptions() # 设置浏览器窗口大小 chrome_options.add_argument('window-size=1800x2000') # 无界面 chrome_options.add_argument('--headless') # 不加载图片 chrome_options.add_argument('blink-settings=imagesEnabled=false') chrome_options = huilian_selenium.chromeOptions(noWin=True, noImg=True, pdf=True) self.driver = webdriver.Chrome(chrome_options=chrome_options) self.driver.maximize_window() super().__init__(driver=self.driver) self.Login() # 信息,参数 def initParmar(self): try: # visa_account 信息 visa_account = self.asql.getOne(*self.asql.select_sql( tb=self._tb_visa, cond={"mpid": self.mpid})) if visa_account['email_status'] == '1': self.userName = visa_account['official_account'] # 登陆账号 self.password = visa_account['official_account_pass'] # 登陆密码 else: self.userName = '******' self.password = '******' except Exception as e: pass print(e) # 登录页面 def Login(self): print('进入登录页面...') try: # get方法会一直等到页面加载,然后才会继续程序,通常测试会在这里选择# sleep(2) self.open("https://online.immi.gov.au/lusc/login") sleep(2) # 输入登陆用户名 self.send_keys((By.NAME, 'username'), self.userName) # 输入登陆密码 self.send_keys((By.NAME, 'password'), self.password) self.click((By.NAME, 'login')) if ">An error has occurred<" in self.page: return 0 else: pass self.click((By.NAME, 'continue'), 2) if self.application_status == 5: self.send_keys((By.NAME, 'i_instantSearchFld'), self.application_id) self.click((By.NAME, 'btn_perform_instant_srch'), 2) self.click((By.ID, 'defaultActionPanel_0_3'), 2) self.pageSuc() except Exception as e: print(e) pass def pageSuc(self): print(f'查询{self.fullName}是否出签?') sleep(3) try: # 已出签 if 'Granted' in self.page: self.click((By.ID, '_0a1a0c1a0a0b0a1a0b0-body')) text = self.find_element( (By.ID, '_0a1a0c1a0a0b1a0c2-row-r0-_0a0b')).text sleep(2) if text == 'IMMI Grant Notification': self.click((By.ID, '_0a1a0c1a0a0b1a0c2-row-r0-_0a0b'), 2) self.click( (By.ID, '_0a1a0c1a0a0b1a0c2-row-r0-_0a0a-dlg-_0b0b'), 2) else: self.click((By.ID, '_0a1a0c1a0a0b1a0c2-row-r1-_0a0b'), 2) sleep(4) self.click( (By.ID, '_0a1a0c1a0a0b1a0c2-row-r1-_0a0a-dlg-_0b0b'), 2) # if os.path.isdir(self.download_path): # os.mkdir(self.download_path) # sleep(3) receive_path = self.download_path + r'\application.pdf' sleep(5) receive_url = requests.post( "https://visa.dllm.cn/index.php?s=/Business/Pcapi/insertpdf", files={ "file": ("application.pdf", open(receive_path, 'rb'), "application/pdf") }, timeout=10).json() print(receive_url) # 保存状态至数据库 update_data = { "status": 6, "receive_url": receive_url, "utime": int(time()) } sqls = self.asql.update_sql(tb=self._tb_info, cond={"id": self.id}, **update_data) sqlc = [ sqls[0].replace(self._tb_info, self._tb_infoC), sqls[1] ] self.asql.update(*sqls) self.asql.update(*sqlc) sleep(1) print(f'{self.fullName}已出签') self.quit() return 0 else: print(f'{self.fullName}未出签') self.quit() return 0 except Exception as e: print(e) self.quit() pass return 1 # 数据库操作 @property def asql(self): return Mysql()