| 
					
				 | 
			
			
				@@ -0,0 +1,218 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+""" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+We-analysis-functions 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+""" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import asyncio 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+from .config import platform_map 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+async def check_account(page, account_name): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    """ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    切换账号 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    :param page: playwright instance page class 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    :param account_name: 小程序名称 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    """ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    await page.get_by_text("账号", exact=True).click() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    await page.get_by_text("切换账号切换账号").click() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    await page.locator(f'text=/^{account_name}$/').click() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    await asyncio.sleep(5) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+async def navigate(page, account_name): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    name_ = """ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    :param page: playwright instance page class 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    :param account_name: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    """ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    await page.get_by_text("经营工具").click() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    for experiment_name in platform_map[account_name].keys(): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        await page.get_by_text("实验工具", exact=True).click() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        await page.get_by_text("实验数据", exact=True).click() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        print(experiment_name) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        await asyncio.sleep(10) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        await page.locator(f'text=/^{experiment_name}$/').click() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        index_list = platform_map[account_name][experiment_name] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        await download_file_list(page, index_list) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+async def download_file_list(page, index_list): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    """ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    :param page: playwright instance page class 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    :param index_list: 需要导出的实验list 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    :return: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    """ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    for i, index in enumerate(index_list): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if i == 0: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            pre_index = index_list[0] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        else: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            pre_index = index_list[i - 1] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        await download_file(page, pre_index, index) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        await asyncio.sleep(10) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+async def download_file(page, pre_index, target_path): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    """ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    :param page: playwright instance page class 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    :param pre_index:   前置索引 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    :param target_path:  目标地址 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    :return: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    """ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    await page.locator("dt").filter(has_text=pre_index).first.click() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    await page.get_by_role("list").get_by_text(target_path, exact=True).click() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    await asyncio.sleep(8) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    await page.get_by_role("img", name="下载").click() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+async def navigate_and_download(page, experiment_name, platform): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    """ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    导航到指定的页面并触发下载。 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    :param page: playwright的页面对象。 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    :param experiment_name: 要导航到的实验名称。 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    :param platform: 小程序名称。 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    """ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    if platform == "票圈视频+" and experiment_name in ['广告实验', '产品/广告实验']: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if experiment_name == "产品/广告实验": 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            await page.get_by_text("实验工具").click() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            await page.get_by_text("实验数据").click() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            await page.locator(f'text=/^{experiment_name}$/').click() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            # 小程序访问人数 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            await asyncio.sleep(10) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            # await page.get_by_text("小程序访问人数").nth(1).click() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            await page.locator("dt").filter(has_text="小程序访问人数").first.click() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            await page.get_by_role("list").get_by_text("小程序访问人数", exact=True).click() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            await asyncio.sleep(10) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            await page.get_by_role("img", name="下载").click() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            await asyncio.sleep(10) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            # 小程序分享人数 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            # await page.get_by_text("小程序访问人数").nth(1).click() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            await page.locator("dt").filter(has_text="小程序访问人数").first.click() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            await page.get_by_role("list").get_by_text("小程序分享人数", exact=True).click() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            await asyncio.sleep(10) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            await page.get_by_role("img", name="下载").click() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            await asyncio.sleep(10) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            # 小程序分享次数 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            await page.locator("dt").filter(has_text="小程序分享人数").click() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            await page.get_by_role("list").get_by_text("小程序分享次数", exact=True).click() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            await asyncio.sleep(10) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            await page.get_by_role("img", name="下载").click() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            await asyncio.sleep(10) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            # 广告曝光次数 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            await page.locator("dt").filter(has_text="小程序分享次数").click() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            await page.get_by_role("list").get_by_text("广告曝光次数", exact=True).click() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            await asyncio.sleep(10) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            await page.get_by_role("img", name="下载").click() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            await asyncio.sleep(10) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            await page.locator("dt").filter(has_text="广告曝光次数").click() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            await page.get_by_role("list").get_by_text("广告曝光人数", exact=True).click() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            await asyncio.sleep(10) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            await page.get_by_role("img", name="下载").click() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            await asyncio.sleep(10) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            # 广告 eCPM 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            await page.locator("dt").filter(has_text="广告曝光人数").click() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            await page.get_by_role("list").get_by_text("广告 eCPM", exact=True).click() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            await asyncio.sleep(10) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            await page.get_by_role("img", name="下载").click() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            await asyncio.sleep(10) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        elif experiment_name == "广告实验": 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            await page.get_by_text("实验工具").click() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            await page.get_by_text("实验数据").click() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            await page.locator(f'text=/^{experiment_name}$/').click() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            # 小程序访问人数 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            await asyncio.sleep(10) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            # await page.get_by_text("小程序访问人数").nth(1).click() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            await page.locator("dt").filter(has_text="小程序访问人数").first.click() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            await page.get_by_role("list").get_by_text("小程序访问人数", exact=True).click() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            await asyncio.sleep(10) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            await page.get_by_role("img", name="下载").click() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            await asyncio.sleep(10) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            # 广告曝光次数 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            await page.locator("dt").filter(has_text="小程序访问人数").first.click() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            await page.get_by_role("list").get_by_text("广告曝光次数", exact=True).click() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            await asyncio.sleep(10) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            await page.get_by_role("img", name="下载").click() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            await asyncio.sleep(10) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            await page.locator("dt").filter(has_text="广告曝光次数").click() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            await page.get_by_role("list").get_by_text("广告曝光人数", exact=True).click() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            await asyncio.sleep(10) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            await page.get_by_role("img", name="下载").click() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            await asyncio.sleep(10) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            # 广告 eCPM 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            await page.locator("dt").filter(has_text="广告曝光人数").click() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            await page.get_by_role("list").get_by_text("广告 eCPM", exact=True).click() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            await asyncio.sleep(10) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            await page.get_by_role("img", name="下载").click() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            await asyncio.sleep(10) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            # 广告收入 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            await page.locator("dt").filter(has_text="广告 eCPM").click() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            await page.get_by_role("list").get_by_text("广告收入", exact=True).click() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            await asyncio.sleep(10) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            await page.get_by_role("img", name="下载").click() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            await asyncio.sleep(10) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    else: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        await page.get_by_text("实验工具").click() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        await page.get_by_text("实验数据").click() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        await page.locator(f'text=/^{experiment_name}$/').click() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        # 小程序访问人数 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        await asyncio.sleep(10) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        # await page.get_by_text("小程序访问人数").nth(1).click() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        await page.locator("dt").filter(has_text="小程序访问人数").first.click() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        await page.get_by_role("list").get_by_text("小程序访问人数", exact=True).click() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        await asyncio.sleep(10) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        await page.get_by_role("img", name="下载").click() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        await asyncio.sleep(10) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        # 小程序分享人数 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        # await page.get_by_text("小程序访问人数").nth(1).click() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        await page.locator("dt").filter(has_text="小程序访问人数").first.click() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        await page.get_by_role("list").get_by_text("小程序分享人数", exact=True).click() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        await asyncio.sleep(10) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        await page.get_by_role("img", name="下载").click() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        await asyncio.sleep(10) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        # 小程序分享次数 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        await page.locator("dt").filter(has_text="小程序分享人数").click() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        await page.get_by_role("list").get_by_text("小程序分享次数", exact=True).click() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        await asyncio.sleep(10) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        await page.get_by_role("img", name="下载").click() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        await asyncio.sleep(10) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        # 广告曝光次数 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        await page.locator("dt").filter(has_text="小程序分享次数").click() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        await page.get_by_role("list").get_by_text("广告曝光次数", exact=True).click() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        await asyncio.sleep(10) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        await page.get_by_role("img", name="下载").click() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        await asyncio.sleep(10) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        # 广告曝光人数 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        await page.locator("dt").filter(has_text="广告曝光次数").click() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        await page.get_by_role("list").get_by_text("广告曝光人数", exact=True).click() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        await asyncio.sleep(10) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        await page.get_by_role("img", name="下载").click() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        await asyncio.sleep(10) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        # 广告 eCPM 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        await page.locator("dt").filter(has_text="广告曝光人数").click() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        await page.get_by_role("list").get_by_text("广告 eCPM", exact=True).click() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        await asyncio.sleep(10) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        await page.get_by_role("img", name="下载").click() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        await asyncio.sleep(10) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        # 广告收入 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        await page.locator("dt").filter(has_text="广告 eCPM").click() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        await page.get_by_role("list").get_by_text("广告收入", exact=True).click() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        await asyncio.sleep(10) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        await page.get_by_role("img", name="下载").click() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        await asyncio.sleep(10) 
			 |