qrpa 1.0.75__tar.gz → 1.0.77__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of qrpa might be problematic. Click here for more details.

Files changed (37) hide show
  1. {qrpa-1.0.75 → qrpa-1.0.77}/PKG-INFO +1 -1
  2. {qrpa-1.0.75 → qrpa-1.0.77}/pyproject.toml +1 -1
  3. {qrpa-1.0.75 → qrpa-1.0.77}/qrpa/fun_web.py +7 -0
  4. {qrpa-1.0.75 → qrpa-1.0.77}/qrpa/shein_lib.py +13 -20
  5. {qrpa-1.0.75 → qrpa-1.0.77}/qrpa/shein_ziniao.py +0 -1
  6. {qrpa-1.0.75 → qrpa-1.0.77}/qrpa.egg-info/PKG-INFO +1 -1
  7. {qrpa-1.0.75 → qrpa-1.0.77}/README.md +0 -0
  8. {qrpa-1.0.75 → qrpa-1.0.77}/qrpa/RateLimitedSender.py +0 -0
  9. {qrpa-1.0.75 → qrpa-1.0.77}/qrpa/__init__.py +0 -0
  10. {qrpa-1.0.75 → qrpa-1.0.77}/qrpa/db_migrator.py +0 -0
  11. {qrpa-1.0.75 → qrpa-1.0.77}/qrpa/feishu_bot_app.py +0 -0
  12. {qrpa-1.0.75 → qrpa-1.0.77}/qrpa/feishu_client.py +0 -0
  13. {qrpa-1.0.75 → qrpa-1.0.77}/qrpa/feishu_logic.py +0 -0
  14. {qrpa-1.0.75 → qrpa-1.0.77}/qrpa/fun_base.py +0 -0
  15. {qrpa-1.0.75 → qrpa-1.0.77}/qrpa/fun_excel.py +0 -0
  16. {qrpa-1.0.75 → qrpa-1.0.77}/qrpa/fun_file.py +0 -0
  17. {qrpa-1.0.75 → qrpa-1.0.77}/qrpa/fun_win.py +0 -0
  18. {qrpa-1.0.75 → qrpa-1.0.77}/qrpa/mysql_module/__init__.py +0 -0
  19. {qrpa-1.0.75 → qrpa-1.0.77}/qrpa/mysql_module/shein_product_model.py +0 -0
  20. {qrpa-1.0.75 → qrpa-1.0.77}/qrpa/mysql_module/shein_return_order_model.py +0 -0
  21. {qrpa-1.0.75 → qrpa-1.0.77}/qrpa/shein_daily_report_model.py +0 -0
  22. {qrpa-1.0.75 → qrpa-1.0.77}/qrpa/shein_excel.py +0 -0
  23. {qrpa-1.0.75 → qrpa-1.0.77}/qrpa/shein_mysql.py +0 -0
  24. {qrpa-1.0.75 → qrpa-1.0.77}/qrpa/shein_sqlite.py +0 -0
  25. {qrpa-1.0.75 → qrpa-1.0.77}/qrpa/temu_chrome.py +0 -0
  26. {qrpa-1.0.75 → qrpa-1.0.77}/qrpa/temu_excel.py +0 -0
  27. {qrpa-1.0.75 → qrpa-1.0.77}/qrpa/temu_lib.py +0 -0
  28. {qrpa-1.0.75 → qrpa-1.0.77}/qrpa/time_utils.py +0 -0
  29. {qrpa-1.0.75 → qrpa-1.0.77}/qrpa/time_utils_example.py +0 -0
  30. {qrpa-1.0.75 → qrpa-1.0.77}/qrpa/wxwork.py +0 -0
  31. {qrpa-1.0.75 → qrpa-1.0.77}/qrpa.egg-info/SOURCES.txt +0 -0
  32. {qrpa-1.0.75 → qrpa-1.0.77}/qrpa.egg-info/dependency_links.txt +0 -0
  33. {qrpa-1.0.75 → qrpa-1.0.77}/qrpa.egg-info/top_level.txt +0 -0
  34. {qrpa-1.0.75 → qrpa-1.0.77}/setup.cfg +0 -0
  35. {qrpa-1.0.75 → qrpa-1.0.77}/setup.py +0 -0
  36. {qrpa-1.0.75 → qrpa-1.0.77}/tests/test_db_migrator.py +0 -0
  37. {qrpa-1.0.75 → qrpa-1.0.77}/tests/test_wxwork.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: qrpa
3
- Version: 1.0.75
3
+ Version: 1.0.77
4
4
  Summary: qsir's rpa library
5
5
  Author: QSir
6
6
  Author-email: QSir <1171725650@qq.com>
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "qrpa"
7
- version = "1.0.75"
7
+ version = "1.0.77"
8
8
  description = "qsir's rpa library"
9
9
  authors = [{ name = "QSir", email = "1171725650@qq.com" }]
10
10
  readme = "README.md"
@@ -5,6 +5,8 @@ from playwright.sync_api import Page
5
5
  from .fun_base import log, send_exception
6
6
  from .time_utils import get_current_datetime
7
7
 
8
+ import inspect
9
+
8
10
  def fetch(page: Page, url: str, params: Optional[Union[dict, list, str]] = None, headers: Optional[dict] = None, config:
9
11
  Optional[dict] = None) -> dict:
10
12
  """
@@ -143,3 +145,8 @@ def full_screen_shot(web_page: Page, config):
143
145
  full_screenshot_image_path = f'{config.auto_dir}/screenshot/{get_current_datetime()}.png'
144
146
  web_page.screenshot(path=full_screenshot_image_path, full_page=True)
145
147
  return full_screenshot_image_path
148
+
149
+ def safe_goto(page, url, **kwargs):
150
+ caller = inspect.stack()[1]
151
+ log(f"[DEBUG] goto called from {caller.filename}:{caller.lineno} url={url}")
152
+ return page.goto(url, **kwargs)
@@ -1,6 +1,6 @@
1
1
  from .fun_file import read_dict_from_file, write_dict_to_file, read_dict_from_file_ex, write_dict_to_file_ex
2
2
  from .fun_base import log, send_exception, md5_string, get_safe_value, NetWorkIdleTimeout
3
- from .fun_web import fetch, full_screen_shot
3
+ from .fun_web import fetch, full_screen_shot, safe_goto
4
4
  from .time_utils import TimeUtils
5
5
  from .wxwork import WxWorkBot
6
6
 
@@ -50,8 +50,7 @@ class SheinLib:
50
50
  if 'https://sso.geiwohuo.com/#/home' not in web_page.url:
51
51
  log("鉴权确定按钮可见 点击'确定'按钮", web_page.title(), web_page.url, self.store_username, self.store_name)
52
52
  web_page.locator('xpath=//div[@id="container" and @alita-name="gmpsso"]//button[@type="button" and @id]').nth(0).click()
53
- web_page.wait_for_load_state("load")
54
- web_page.wait_for_timeout(1000)
53
+ web_page.wait_for_timeout(5000)
55
54
 
56
55
  while web_page.locator('//div[text()="验证码"]').is_visible():
57
56
  log(f'等待输入验证码: {wait_count}', self.store_username, self.store_name)
@@ -92,13 +91,12 @@ class SheinLib:
92
91
 
93
92
  log('商家后台不可见', web_page.title(), web_page.url, self.store_username, self.store_name)
94
93
  if 'https://sso.geiwohuo.com/#/home' in web_page.url:
95
- web_page.wait_for_timeout(3000)
96
94
  web_page.reload()
97
- web_page.wait_for_load_state("load")
95
+ web_page.wait_for_timeout(5000)
98
96
 
99
97
  while r'=/CN' in web_page.url:
100
- web_page.goto('https://sso.geiwohuo.com')
101
- web_page.wait_for_load_state("load")
98
+ safe_goto(web_page, 'https://sso.geiwohuo.com')
99
+
102
100
  web_page.wait_for_timeout(5000)
103
101
  if web_page.locator('//input[@name="username"]').is_visible():
104
102
  log("用户名输入框可见 等待5秒点击'登录'按钮", self.store_username, self.store_name)
@@ -115,35 +113,30 @@ class SheinLib:
115
113
 
116
114
  if 'SHEIN全球商家中心' in web_page.title() or '后台首页' in web_page.title() or '商家后台' in web_page.title():
117
115
  log(web_page.title(), '中断循环', self.store_username, self.store_name)
118
- web_page.wait_for_load_state("load")
119
- web_page.wait_for_timeout(2000)
116
+ web_page.wait_for_timeout(5000)
120
117
  break
121
118
 
122
119
  if 'mrs.biz.sheincorp.cn' in web_page.url and '商家后台' in web_page.title():
123
- web_page.goto('https://sso.geiwohuo.com/#/home')
124
- web_page.wait_for_load_state("load")
125
- web_page.wait_for_timeout(3000)
120
+ safe_goto(web_page, 'https://sso.geiwohuo.com/#/home')
121
+ web_page.wait_for_timeout(5000)
126
122
 
127
123
  if web_page.locator('//h1[contains(text(),"鉴权")]').is_visible():
128
124
  log('检测到鉴权 刷新页面', self.store_username, self.store_name)
129
125
  web_page.reload()
130
- web_page.wait_for_load_state('load')
131
- web_page.wait_for_timeout(3000)
126
+ web_page.wait_for_timeout(5000)
132
127
  web_page.reload()
133
- web_page.wait_for_timeout(3000)
128
+ web_page.wait_for_timeout(5000)
134
129
 
135
130
  if web_page.title() == 'SHEIN':
136
- web_page.goto('https://sso.geiwohuo.com/#/home')
137
- web_page.wait_for_load_state("load")
138
- web_page.wait_for_timeout(3000)
131
+ safe_goto(web_page, 'https://sso.geiwohuo.com/#/home')
132
+ web_page.wait_for_timeout(5000)
139
133
 
140
134
  break
141
135
  except Exception as e:
142
136
  log(f"错误发生: {e}, 重试中...({self.store_username}, {self.store_name})")
143
137
  log(traceback.format_exc())
144
138
  if 'crashed' in str(e) or 'https://sso.geiwohuo.com//#/auth/SSLS' in web_page.url:
145
- web_page.goto('https://sso.geiwohuo.com')
146
- web_page.wait_for_load_state('load')
139
+ safe_goto(web_page, 'https://sso.geiwohuo.com/#/home')
147
140
  web_page.wait_for_timeout(10000)
148
141
  retries += 1
149
142
  if retries >= MAX_RETRIES:
@@ -258,7 +258,6 @@ class ZiniaoBrowser:
258
258
  """打开启动页面并执行业务逻辑"""
259
259
  page = browser_context.pages[0]
260
260
  page.goto(launcher_page)
261
- page.wait_for_load_state('load')
262
261
  page.wait_for_timeout(6000)
263
262
 
264
263
  run_func(page, store_username, store_name, task_key)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: qrpa
3
- Version: 1.0.75
3
+ Version: 1.0.77
4
4
  Summary: qsir's rpa library
5
5
  Author: QSir
6
6
  Author-email: QSir <1171725650@qq.com>
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes