functions.py 9.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218
  1. """
  2. We-analysis-functions
  3. """
  4. import asyncio
  5. from .config import platform_map
  6. async def check_account(page, account_name):
  7. """
  8. 切换账号
  9. :param page: playwright instance page class
  10. :param account_name: 小程序名称
  11. """
  12. await page.get_by_text("账号", exact=True).click()
  13. await page.get_by_text("切换账号切换账号").click()
  14. await page.locator(f'text=/^{account_name}$/').click()
  15. await asyncio.sleep(5)
  16. async def navigate(page, account_name):
  17. name_ = """
  18. :param page: playwright instance page class
  19. :param account_name:
  20. """
  21. await page.get_by_text("经营工具").click()
  22. for experiment_name in platform_map[account_name].keys():
  23. await page.get_by_text("实验工具", exact=True).click()
  24. await page.get_by_text("实验数据", exact=True).click()
  25. print(experiment_name)
  26. await asyncio.sleep(10)
  27. await page.locator(f'text=/^{experiment_name}$/').click()
  28. index_list = platform_map[account_name][experiment_name]
  29. await download_file_list(page, index_list)
  30. async def download_file_list(page, index_list):
  31. """
  32. :param page: playwright instance page class
  33. :param index_list: 需要导出的实验list
  34. :return:
  35. """
  36. for i, index in enumerate(index_list):
  37. if i == 0:
  38. pre_index = index_list[0]
  39. else:
  40. pre_index = index_list[i - 1]
  41. await download_file(page, pre_index, index)
  42. await asyncio.sleep(10)
  43. async def download_file(page, pre_index, target_path):
  44. """
  45. :param page: playwright instance page class
  46. :param pre_index: 前置索引
  47. :param target_path: 目标地址
  48. :return:
  49. """
  50. await page.locator("dt").filter(has_text=pre_index).first.click()
  51. await page.get_by_role("list").get_by_text(target_path, exact=True).click()
  52. await asyncio.sleep(8)
  53. await page.get_by_role("img", name="下载").click()
  54. async def navigate_and_download(page, experiment_name, platform):
  55. """
  56. 导航到指定的页面并触发下载。
  57. :param page: playwright的页面对象。
  58. :param experiment_name: 要导航到的实验名称。
  59. :param platform: 小程序名称。
  60. """
  61. if platform == "票圈视频+" and experiment_name in ['广告实验', '产品/广告实验']:
  62. if experiment_name == "产品/广告实验":
  63. await page.get_by_text("实验工具").click()
  64. await page.get_by_text("实验数据").click()
  65. await page.locator(f'text=/^{experiment_name}$/').click()
  66. # 小程序访问人数
  67. await asyncio.sleep(10)
  68. # await page.get_by_text("小程序访问人数").nth(1).click()
  69. await page.locator("dt").filter(has_text="小程序访问人数").first.click()
  70. await page.get_by_role("list").get_by_text("小程序访问人数", exact=True).click()
  71. await asyncio.sleep(10)
  72. await page.get_by_role("img", name="下载").click()
  73. await asyncio.sleep(10)
  74. # 小程序分享人数
  75. # await page.get_by_text("小程序访问人数").nth(1).click()
  76. await page.locator("dt").filter(has_text="小程序访问人数").first.click()
  77. await page.get_by_role("list").get_by_text("小程序分享人数", exact=True).click()
  78. await asyncio.sleep(10)
  79. await page.get_by_role("img", name="下载").click()
  80. await asyncio.sleep(10)
  81. # 小程序分享次数
  82. await page.locator("dt").filter(has_text="小程序分享人数").click()
  83. await page.get_by_role("list").get_by_text("小程序分享次数", exact=True).click()
  84. await asyncio.sleep(10)
  85. await page.get_by_role("img", name="下载").click()
  86. await asyncio.sleep(10)
  87. # 广告曝光次数
  88. await page.locator("dt").filter(has_text="小程序分享次数").click()
  89. await page.get_by_role("list").get_by_text("广告曝光次数", exact=True).click()
  90. await asyncio.sleep(10)
  91. await page.get_by_role("img", name="下载").click()
  92. await asyncio.sleep(10)
  93. await page.locator("dt").filter(has_text="广告曝光次数").click()
  94. await page.get_by_role("list").get_by_text("广告曝光人数", exact=True).click()
  95. await asyncio.sleep(10)
  96. await page.get_by_role("img", name="下载").click()
  97. await asyncio.sleep(10)
  98. # 广告 eCPM
  99. await page.locator("dt").filter(has_text="广告曝光人数").click()
  100. await page.get_by_role("list").get_by_text("广告 eCPM", exact=True).click()
  101. await asyncio.sleep(10)
  102. await page.get_by_role("img", name="下载").click()
  103. await asyncio.sleep(10)
  104. elif experiment_name == "广告实验":
  105. await page.get_by_text("实验工具").click()
  106. await page.get_by_text("实验数据").click()
  107. await page.locator(f'text=/^{experiment_name}$/').click()
  108. # 小程序访问人数
  109. await asyncio.sleep(10)
  110. # await page.get_by_text("小程序访问人数").nth(1).click()
  111. await page.locator("dt").filter(has_text="小程序访问人数").first.click()
  112. await page.get_by_role("list").get_by_text("小程序访问人数", exact=True).click()
  113. await asyncio.sleep(10)
  114. await page.get_by_role("img", name="下载").click()
  115. await asyncio.sleep(10)
  116. # 广告曝光次数
  117. await page.locator("dt").filter(has_text="小程序访问人数").first.click()
  118. await page.get_by_role("list").get_by_text("广告曝光次数", exact=True).click()
  119. await asyncio.sleep(10)
  120. await page.get_by_role("img", name="下载").click()
  121. await asyncio.sleep(10)
  122. await page.locator("dt").filter(has_text="广告曝光次数").click()
  123. await page.get_by_role("list").get_by_text("广告曝光人数", exact=True).click()
  124. await asyncio.sleep(10)
  125. await page.get_by_role("img", name="下载").click()
  126. await asyncio.sleep(10)
  127. # 广告 eCPM
  128. await page.locator("dt").filter(has_text="广告曝光人数").click()
  129. await page.get_by_role("list").get_by_text("广告 eCPM", exact=True).click()
  130. await asyncio.sleep(10)
  131. await page.get_by_role("img", name="下载").click()
  132. await asyncio.sleep(10)
  133. # 广告收入
  134. await page.locator("dt").filter(has_text="广告 eCPM").click()
  135. await page.get_by_role("list").get_by_text("广告收入", exact=True).click()
  136. await asyncio.sleep(10)
  137. await page.get_by_role("img", name="下载").click()
  138. await asyncio.sleep(10)
  139. else:
  140. await page.get_by_text("实验工具").click()
  141. await page.get_by_text("实验数据").click()
  142. await page.locator(f'text=/^{experiment_name}$/').click()
  143. # 小程序访问人数
  144. await asyncio.sleep(10)
  145. # await page.get_by_text("小程序访问人数").nth(1).click()
  146. await page.locator("dt").filter(has_text="小程序访问人数").first.click()
  147. await page.get_by_role("list").get_by_text("小程序访问人数", exact=True).click()
  148. await asyncio.sleep(10)
  149. await page.get_by_role("img", name="下载").click()
  150. await asyncio.sleep(10)
  151. # 小程序分享人数
  152. # await page.get_by_text("小程序访问人数").nth(1).click()
  153. await page.locator("dt").filter(has_text="小程序访问人数").first.click()
  154. await page.get_by_role("list").get_by_text("小程序分享人数", exact=True).click()
  155. await asyncio.sleep(10)
  156. await page.get_by_role("img", name="下载").click()
  157. await asyncio.sleep(10)
  158. # 小程序分享次数
  159. await page.locator("dt").filter(has_text="小程序分享人数").click()
  160. await page.get_by_role("list").get_by_text("小程序分享次数", exact=True).click()
  161. await asyncio.sleep(10)
  162. await page.get_by_role("img", name="下载").click()
  163. await asyncio.sleep(10)
  164. # 广告曝光次数
  165. await page.locator("dt").filter(has_text="小程序分享次数").click()
  166. await page.get_by_role("list").get_by_text("广告曝光次数", exact=True).click()
  167. await asyncio.sleep(10)
  168. await page.get_by_role("img", name="下载").click()
  169. await asyncio.sleep(10)
  170. # 广告曝光人数
  171. await page.locator("dt").filter(has_text="广告曝光次数").click()
  172. await page.get_by_role("list").get_by_text("广告曝光人数", exact=True).click()
  173. await asyncio.sleep(10)
  174. await page.get_by_role("img", name="下载").click()
  175. await asyncio.sleep(10)
  176. # 广告 eCPM
  177. await page.locator("dt").filter(has_text="广告曝光人数").click()
  178. await page.get_by_role("list").get_by_text("广告 eCPM", exact=True).click()
  179. await asyncio.sleep(10)
  180. await page.get_by_role("img", name="下载").click()
  181. await asyncio.sleep(10)
  182. # 广告收入
  183. await page.locator("dt").filter(has_text="广告 eCPM").click()
  184. await page.get_by_role("list").get_by_text("广告收入", exact=True).click()
  185. await asyncio.sleep(10)
  186. await page.get_by_role("img", name="下载").click()
  187. await asyncio.sleep(10)