【uiautomation+selenium】学习自动化(大学生们看过来)
争对之前的自动化,目前主要改了一个控件的查找,
点击青春浙江后,直接去查找大学习按钮(与以往不同之处),修改这里即可
# -*- coding: utf-8-*-
import time
import subprocess
import uiautomation as auto
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import Select
import winreg
'''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}')
# todo 多出来的
UIA_Window = auto.WindowControl(ClassName="ChatWnd")
daxuexi = UIA_Window.ButtonControl(Name="大学习")
daxuexi.Click()
###
# 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().Value
print(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 desktop
driver = webdriver.Chrome()
driver.get(edit)
# 窗口最大化
driver.maximize_window()
time.sleep(1)
# 进入iframe
driver.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)
# 省市地址确定
# todo
# driver.find_element(by=By.XPATH, value='/html/body/div[2]/div[8]/div[3]').click()
driver.find_element(by=By.XPATH, value='/html/body/div[2]/div[9]/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:
pass
driver.close()