corp20250923
This commit is contained in:
@@ -1,8 +1,6 @@
|
||||
from DrissionPage._base.chromium import Chromium
|
||||
from DrissionPage._configs.chromium_options import ChromiumOptions
|
||||
from DrissionPage._pages.mix_tab import MixTab
|
||||
from cssselect.parser import parse_simple_selector
|
||||
from config import ConfigManager # 新增导入
|
||||
import time
|
||||
|
||||
class Sinopec_ewcc(object):
|
||||
@@ -16,34 +14,67 @@ class Sinopec_ewcc(object):
|
||||
self.co = ChromiumOptions().set_browser_path(self.browser_path)
|
||||
self.co.ignore_certificate_errors(True)
|
||||
self.browser=Chromium(self.co)
|
||||
self.config_manager = ConfigManager() # 新增配置管理器实例
|
||||
self.ewcc_config = self.config_manager.app_config.get('ewcc', {}) # 修改为通过类访问
|
||||
|
||||
def quit(self ):
|
||||
self.browser.quit()
|
||||
|
||||
def load_cookies(self):
|
||||
cookies = self.ewcc_config.get('cookies', {})
|
||||
print('使用保存的cookies登录')
|
||||
for cookie in cookies:
|
||||
self.browser.set.cookies(cookie)
|
||||
### print(cookie)
|
||||
def init_cookies(self, cookies):
|
||||
"""设置传入的cookies到浏览器
|
||||
Args:
|
||||
cookies: 要设置的cookies(可以是列表、字典或JSON字符串)
|
||||
Returns:
|
||||
bool: 设置成功返回True,失败返回False
|
||||
"""
|
||||
print('使用传入的cookies登录')
|
||||
|
||||
# 处理字符串类型的cookies
|
||||
if isinstance(cookies, str):
|
||||
try:
|
||||
import json
|
||||
# 尝试将字符串解析为JSON对象
|
||||
parsed_cookies = json.loads(cookies)
|
||||
print('成功将字符串cookies解析为JSON对象')
|
||||
# 递归调用,使用解析后的数据
|
||||
return self.init_cookies(parsed_cookies)
|
||||
except json.JSONDecodeError as e:
|
||||
print(f'字符串cookies解析失败: {str(e)}')
|
||||
return False
|
||||
|
||||
# 处理字典类型的cookies
|
||||
elif isinstance(cookies, dict):
|
||||
try:
|
||||
self.browser.set.cookies(cookies)
|
||||
print('成功设置字典类型的cookies')
|
||||
return True
|
||||
except Exception as e:
|
||||
print(f'设置字典类型的cookies失败: {str(e)}')
|
||||
return False
|
||||
|
||||
# 处理列表类型的cookies
|
||||
elif isinstance(cookies, list):
|
||||
try:
|
||||
for cookie in cookies:
|
||||
self.browser.set.cookies(cookie)
|
||||
print('成功设置列表类型的cookies')
|
||||
return True
|
||||
except Exception as e:
|
||||
print(f'设置列表类型的cookies失败: {str(e)}')
|
||||
return False
|
||||
|
||||
# 处理未知类型
|
||||
else:
|
||||
print(f'传入的cookies格式不正确,类型为: {type(cookies)},应为列表、字典或JSON字符串')
|
||||
return False
|
||||
|
||||
def save_cookies(self):
|
||||
"""获取并返回当前浏览器tab的cookies
|
||||
Returns:
|
||||
list: 当前浏览器tab的cookies列表
|
||||
"""
|
||||
# 保存当前 cookie
|
||||
self.tab.refresh()
|
||||
cookies = self.tab.cookies()
|
||||
### print(cookies)
|
||||
self.ewcc_config['cookies'] = cookies
|
||||
self.ewcc_config['savetime'] = time.time()
|
||||
print("--------------------")
|
||||
self.config_manager.app_config['ewcc'] = self.ewcc_config # 修改为通过类访问
|
||||
self.config_manager.save_config() # 修改为调用类方法
|
||||
|
||||
|
||||
def test(self ):
|
||||
# print(self.browser as Chromium.version )
|
||||
pass
|
||||
return cookies
|
||||
|
||||
def open_web(self,url=None):
|
||||
if url is None:
|
||||
@@ -96,29 +127,6 @@ class Sinopec_ewcc(object):
|
||||
return cur_login
|
||||
|
||||
|
||||
# 判断是否登录 ,如果没有登录 ,则提示十次,间断5秒
|
||||
i = 1
|
||||
time.sleep(2)
|
||||
while i <= 10:
|
||||
cur_login = False
|
||||
try:
|
||||
e = None
|
||||
e = self.tab.ele('@@tag()=span@@text()^忘记密码')
|
||||
### print(e.value)
|
||||
print(f'需要登录 <{i}> :')
|
||||
time.sleep(5)
|
||||
except Exception as e:
|
||||
print('已经登录')
|
||||
print(f'{e}')
|
||||
cur_login = True
|
||||
|
||||
if cur_login:
|
||||
break
|
||||
i += 1
|
||||
if not cur_login:
|
||||
print('登录 失败,强制退出。')
|
||||
return cur_login
|
||||
|
||||
def login(self,username=None,userpass=None,otp=None):
|
||||
self.tab.get(self.url)
|
||||
self.tab.wait.eles_loaded('xpath://*[@id="authen1Form"]/button')
|
||||
@@ -126,9 +134,9 @@ class Sinopec_ewcc(object):
|
||||
|
||||
try:
|
||||
ele_div=self.tab.ele('#tab3Con')
|
||||
ele_div.ele('#fs3_username').set.value(self.ewcc_config.get('username','pengf332.hnsy'))
|
||||
ele_div.ele('#fs3_username').set.value(username)
|
||||
time.sleep(1)
|
||||
ele_div.ele('#fs3_password').set.value(self.ewcc_config.get('password','Pf7842158c'))
|
||||
ele_div.ele('#fs3_password').set.value(userpass)
|
||||
time.sleep(1)
|
||||
ele_div.ele('#fs3_otpOrSms').set.value(otp)
|
||||
time.sleep(1)
|
||||
@@ -148,29 +156,40 @@ class Sinopec_ewcc(object):
|
||||
time.sleep(3)
|
||||
return True
|
||||
|
||||
def Autologin(self,username=None,userpass=None,otp=None,cookies=None):
|
||||
# 1 查找现有的标签
|
||||
print('<1> 查找 现有的标签')
|
||||
self.find_tab() # 新增:查找标签页
|
||||
|
||||
def show_login(self):
|
||||
self.tab.get(self.url)
|
||||
self.tab.wait.eles_loaded('xpath://*[@id="authen1Form"]/button')
|
||||
time.sleep(3)
|
||||
# 2 如果没有登录 ,则使用cookie登录
|
||||
if not self.is_login():
|
||||
print('<2> 找不到对应的网站,使用cookies尝试登录')
|
||||
self.init_cookies(cookies)
|
||||
self.new_tab()
|
||||
|
||||
try:
|
||||
ele_div=self.tab.ele('#tab3Con')
|
||||
ele_div.ele('#fs3_username').set.value(self.ewcc_config.get('username','pengf332.hnsy'))
|
||||
ele_div.ele('#fs3_password').set.value(self.ewcc_config.get('password','Pf7842158b'))
|
||||
ele_div.ele('#fs3_otpOrSms').set.value(self.ewcc_config.get('otpOrSms','129727'))
|
||||
# ele_div.ele('@type=submit').click()
|
||||
except Exception as e:
|
||||
print(e)
|
||||
|
||||
time.sleep(60)
|
||||
return True
|
||||
# 3 判断是否登录,如果登录不成功,则使用帐号和密码登录
|
||||
if not self.is_login():
|
||||
print('<3> 找不对应的网站,使用帐号密码登录')
|
||||
# 这里要注意12小时才可以登录一次。
|
||||
# 这里显示登录界面,并等待输入一分钟
|
||||
self.login(username=username,userpass=userpass,otp=otp)
|
||||
|
||||
# 4 判断是否登录 ,如果失败,则发送信息到微信上
|
||||
if self.is_login():
|
||||
self.tab.refresh()
|
||||
self.save_cookies()
|
||||
print(" 保存cookies")
|
||||
return True
|
||||
else:
|
||||
self.send_message()
|
||||
return False
|
||||
|
||||
def send_message(self):
|
||||
pass
|
||||
|
||||
def query_car_info(self,plate_number=None,phone_number=None,additional_info=None):
|
||||
print(plate_number)
|
||||
print("ssssssssssssssssssssssssss")
|
||||
self.tab.ele("@@tag()=li@@title=订单中心").click()
|
||||
time.sleep(2)
|
||||
self.tab.ele("@@tag()=a@@name=客户信息查询").click()
|
||||
|
||||
Reference in New Issue
Block a user