【uiautomation+selenium】XX大学习全自动化(大学生们看过来)
🔝🔝🔝🔝🔝🔝🔝🔝🔝🔝🔝🔝
🥰 博客首页:knighthood2001
😗 欢迎点赞👍评论🗨️
❤️ 热爱python,期待与大家一同进步成长!!❤️
实现目的:pc端进行XX大学习全自动化
实现过程:登录微信,微信进入xx大学习,进行学习,最终截图保存至桌面。
实现视频全过程:
Python实现xx大学习自动化
笔者之前的文章有具体讲解:
在学uiautomation(以微信进入大学习为例)
pyzbar+uiautomation(实现扫码进入微信大学习)
【对于大学习的研究】(最新)
目录
模块准备
打开微信
判断微信是否登录
微信页面操作
大学习页面操作
页面关闭
大学习的学习、答题、保存图片至桌面
全部代码展示
总结
模块准备
import timeimport subprocessimport uiautomation as autofrom selenium import webdriverfrom selenium.webdriver.common.by import Byfrom selenium.webdriver.support.ui import Selectimport winreg
打开微信
# 可执行文件的具体地址信息subprocess.Popen('E:\微信\WeChat\WeChat.exe')
判断微信是否登录
# 判断微信是否已经登录wechat_login = auto.PaneControl(Name='微信')enter_wechat_btn = wechat_login.ButtonControl(Name='进入微信')if enter_wechat_btn.Exists(): enter_wechat_btn.Click()
微信页面操作
# 进入微信后wechatWindow = auto.WindowControl(searchDepth=1, className='WeChatMainWndForPC', Name='微信')# 点击聊天button = wechatWindow.ButtonControl(Name='聊天')button.Click()# 搜索search = wechatWindow.EditControl(Name='搜索')search.Click()# 通过回车search.GetParentControl().GetChildren()[1].SendKeys('青春浙江')time.sleep(2)wechatWindow.SendKeys('{Enter}')session = wechatWindow.PaneControl(Name='会话列表')more = session.ButtonControl(Name='更多')more.Click()send_message = auto.MenuItemControl(Name='发消息')send_message.Click()# 大概需要六秒dxx_btn = session.ButtonControl(Name='大学习')dxx_btn.Click()
大学习页面操作
wechatWindow_2 = auto.WindowControl(searchDepth=1, className='CefWebViewWnd', Name='微信')# 这个判断会花费较长时间# 每隔一段时间后会出现授权信息agree_btn = wechatWindow_2.ButtonControl(Name="同意")if agree_btn.Exists(): agree_btn.Click()max = wechatWindow_2.ButtonControl(Name='向下还原')# 判断页面是否最大化if max.Exists(): max.Click()study_icon = wechatWindow_2.ImageControl(Name='立即学习')study_icon.Click()# 到达立即参与界面participate_in_btn = wechatWindow_2.DocumentControl(Name="青春浙江“青年大学习”").GetChildren()[0].GetChildren()[4].GetChildren()[0]participate_in_btn.Click()# # 到达去学习界面study_page = wechatWindow_2.DocumentControl(Name="青春浙江“青年大学习”").GetChildren()[0].GetChildren()[3].GetChildren()[0]time.sleep(5)study_btn = study_page.GetChildren()[9]study_btn.Click()max_page = wechatWindow_2.ButtonControl(Name='最大化')max_page.Click()time.sleep(2)edit = wechatWindow_2.EditControl(searchDepth=5).GetValuePattern().Valueprint(edit)# 向下还原restore_page = wechatWindow_2.ButtonControl(Name='向下还原')restore_page.Click()
页面关闭
# 关闭具体页面wechatWindow_2.ButtonControl(Name='关闭').Click()# 关闭微信界面wechatWindow.ButtonControl(Name='关闭').Click()
大学习的学习、答题、保存图片至桌面
def desktop_path(): key = winreg.OpenKey(winreg.HKEY_CURRENT_USER, r'Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders') desktop = winreg.QueryValueEx(key, "Desktop")[0] # print(desktop) return desktopdriver = webdriver.Chrome()driver.get(edit)# 窗口最大化driver.maximize_window()time.sleep(1)# 进入iframedriver.switch_to.frame(0)time.sleep(1)# 根据文本Select(driver.find_element(by=By.CSS_SELECTOR, value='#province')).select_by_visible_text('浙江省')# time.sleep(1)Select(driver.find_element(by=By.CSS_SELECTOR, value='#city')).select_by_visible_text('绍兴市')# time.sleep(1)# 省市地址确定driver.find_element(by=By.XPATH, value='/html/body/div[2]/div[8]/div[3]').click()# 开始学习driver.find_element(by=By.CSS_SELECTOR, value='body > div.container > div.section0.topindex.ani > div.start_btn.on').click()# 倍速time.sleep(2)driver.execute_script("document.querySelector('video').playbackRate = 15.0;")while True: try: # 是否出现题目 driver.find_element(by=By.CSS_SELECTOR, value='body > div.container > div.section1.topindex1') time.sleep(0.1) # 选A driver.find_element(by=By.CSS_SELECTOR, value='body > div.container > div.section1.topindex1 > div.w1.option').click() time.sleep(0.1) # 确认按钮 driver.find_element(by=By.CSS_SELECTOR, value='body > div.container > div.section1.topindex1 > div.button').click() # 继续学习 time.sleep(2.5) driver.find_element(by=By.CSS_SELECTOR, value='body > div.container > div.section1.topindex1 > div.continue').click() # 15倍速 driver.execute_script("document.querySelector('video').playbackRate = 15.0;") except: pass try: if driver.find_element(by=By.CSS_SELECTOR, value='body > div.container > div.section3.topindex2'): time.sleep(1) a = time.time() # driver.get_screenshot_as_file(r'C:\Users\knighthood\OneDrive\桌面\{}.png'.format(a)) driver.get_screenshot_as_file(r'{}\{}.png'.format(desktop_path(), a)) break except: passdriver.close()
全部代码展示
# -*- coding: utf-8-*-import timeimport subprocessimport uiautomation as autofrom selenium import webdriverfrom selenium.webdriver.common.by import Byfrom selenium.webdriver.support.ui import Selectimport winreg'''searchFromControl: `Control` or its subclass, if it is None, search from root control(Desktop).searchDepth: int, max search depth from searchFromControl.Depth: int, only search controls in relative depth from searchFromControl, ignore controls in depth(0~Depth-1), if set, searchDepth will be set to Depth too.''''''1'''# 可执行文件的具体地址信息subprocess.Popen('E:\微信\WeChat\WeChat.exe')# 判断微信是否已经登录wechat_login = auto.PaneControl(Name='微信')enter_wechat_btn = wechat_login.ButtonControl(Name='进入微信')if enter_wechat_btn.Exists(): enter_wechat_btn.Click()# 进入微信后wechatWindow = auto.WindowControl(searchDepth=1, className='WeChatMainWndForPC', Name='微信')# 点击聊天button = wechatWindow.ButtonControl(Name='聊天')button.Click()# 搜索search = wechatWindow.EditControl(Name='搜索')search.Click()# 通过回车search.GetParentControl().GetChildren()[1].SendKeys('青春浙江')time.sleep(2)wechatWindow.SendKeys('{Enter}')session = wechatWindow.PaneControl(Name='会话列表')more = session.ButtonControl(Name='更多')more.Click()send_message = auto.MenuItemControl(Name='发消息')send_message.Click()# 大概需要六秒dxx_btn = session.ButtonControl(Name='大学习')dxx_btn.Click()'''2'''# ---------------------------------------------wechatWindow_2 = auto.WindowControl(searchDepth=1, className='CefWebViewWnd', Name='微信')# 这个判断会花费较长时间# 每隔一段时间后会出现授权信息agree_btn = wechatWindow_2.ButtonControl(Name="同意")if agree_btn.Exists(): agree_btn.Click()max = wechatWindow_2.ButtonControl(Name='向下还原')# 判断页面是否最大化if max.Exists(): max.Click()study_icon = wechatWindow_2.ImageControl(Name='立即学习')study_icon.Click()# 到达立即参与界面participate_in_btn = wechatWindow_2.DocumentControl(Name="青春浙江“青年大学习”").GetChildren()[0].GetChildren()[4].GetChildren()[0]participate_in_btn.Click()# # 到达去学习界面study_page = wechatWindow_2.DocumentControl(Name="青春浙江“青年大学习”").GetChildren()[0].GetChildren()[3].GetChildren()[0]time.sleep(5)study_btn = study_page.GetChildren()[9]study_btn.Click()max_page = wechatWindow_2.ButtonControl(Name='最大化')max_page.Click()time.sleep(2)edit = wechatWindow_2.EditControl(searchDepth=5).GetValuePattern().Valueprint(edit)# 向下还原restore_page = wechatWindow_2.ButtonControl(Name='向下还原')restore_page.Click()# 关闭具体页面wechatWindow_2.ButtonControl(Name='关闭').Click()# 关闭微信界面wechatWindow.ButtonControl(Name='关闭').Click()'''3'''def desktop_path(): key = winreg.OpenKey(winreg.HKEY_CURRENT_USER, r'Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders') desktop = winreg.QueryValueEx(key, "Desktop")[0] # print(desktop) return desktopdriver = webdriver.Chrome()driver.get(edit)# 窗口最大化driver.maximize_window()time.sleep(1)# 进入iframedriver.switch_to.frame(0)time.sleep(1)# 根据文本Select(driver.find_element(by=By.CSS_SELECTOR, value='#province')).select_by_visible_text('浙江省')# time.sleep(1)Select(driver.find_element(by=By.CSS_SELECTOR, value='#city')).select_by_visible_text('绍兴市')# time.sleep(1)# 省市地址确定driver.find_element(by=By.XPATH, value='/html/body/div[2]/div[8]/div[3]').click()# 开始学习driver.find_element(by=By.CSS_SELECTOR, value='body > div.container > div.section0.topindex.ani > div.start_btn.on').click()# 倍速time.sleep(2)driver.execute_script("document.querySelector('video').playbackRate = 15.0;")while True: try: # 是否出现题目 driver.find_element(by=By.CSS_SELECTOR, value='body > div.container > div.section1.topindex1') time.sleep(0.1) # 选A driver.find_element(by=By.CSS_SELECTOR, value='body > div.container > div.section1.topindex1 > div.w1.option').click() time.sleep(0.1) # 确认按钮 driver.find_element(by=By.CSS_SELECTOR, value='body > div.container > div.section1.topindex1 > div.button').click() # 继续学习 time.sleep(2.5) driver.find_element(by=By.CSS_SELECTOR, value='body > div.container > div.section1.topindex1 > div.continue').click() # 15倍速 driver.execute_script("document.querySelector('video').playbackRate = 15.0;") except: pass try: if driver.find_element(by=By.CSS_SELECTOR, value='body > div.container > div.section3.topindex2'): time.sleep(1) a = time.time() # driver.get_screenshot_as_file(r'C:\Users\knighthood\OneDrive\桌面\{}.png'.format(a)) driver.get_screenshot_as_file(r'{}\{}.png'.format(desktop_path(), a)) break except: passdriver.close()
总结
①这篇博文中的内容的讲解在之前几篇博文中,且已经具体讲解了,需要的可以自己去查看。
②代码中主要需要更改的是微信所在的地址,你所在城市,比如笔者是浙江省绍兴市的。
③代码涉及到uiautomation和selenium模块,需要大家自己去学习。
④上述内容如有错误,请指正!!❤️❤️❤️❤️