标签:网页 V1 python driver element 实现 time id find
auto_web1.py 实现自动打开网页并进行操作,封装为一个函数。schedule_time1.py实现每天定点执行该程序。
主要是用到selenium模块打开浏览器,然后driver.find_element_by_id 、 driver.find_element_by_xpath
函数来定位需要点击的按钮所在位置,第二个程序是定时执行用的,但是运行一段时间后会出现bug。如果在windows10运行,可以直接使用系统自带的定时计划任务。
#@File : auto_web1.py
#@Time : 2021/3/29 21:18
#@Author: Ang
import time
import os
from selenium import webdriver
from selenium.common.exceptions import NoAlertPresentException
import traceback
from selenium.webdriver.common.keys import Keys
def auto_web_1():
chromedriver = "C:\Program Files\Google\Chrome\Application"
os.environ["webdriver.ie.driver"] = chromedriver
driver = webdriver.Chrome() # 选择Chrome浏览器
driver.get('http://hrbeu.edu.cn') #输入自己要打开的网站
driver.maximize_window() # 最大化谷歌浏览器
time.sleep(1)
# time.sleep(2)
# 处理alert弹窗
try:
alert1 = driver.switch_to.alert # switch_to.alert点击确认alert
except NoAlertPresentException as e:
print("no alert")
traceback.print_exc()
else:
at_text1 = alert1.text
print("at_text:" + at_text1)
time.sleep(1)
# driver.find_element_by_link_text('登录').click() # 点击“账户登录”
username = "123456789" # 请替换成你的用户名
password = "123456789" # 请替换成你的密码
user_phone = "123456789"
user_local = "00"
user_teacher = "张三"
user_teacher_number = "12345678910"
user_thing1 = "xx"
user_thing2 = "xx"
user_time_begin = "06:05"
user_time_end = "21:55"
# <input data-v-1c10fd99="" type="text" name="username" placeholder="请输入学号/工号" id="username" class="input1 required">
driver.find_element_by_id('username').click() # 点击用户名输入框
driver.find_element_by_id('username').clear() # 清空输入框
driver.find_element_by_id('username').send_keys(username) # 自动敲入用户名
time.sleep(1)
driver.find_element_by_id('password').click() # 点击密码输入框
driver.find_element_by_id('password').clear() # 清空输入框
driver.find_element_by_id('password').send_keys(password) # 自动敲入密码
# 采用class定位登陆按钮
# driver.find_element_by_id('ext-gen29').click()
driver.find_element_by_id('login-submit').click() # 点击登录
# driver.find_element_by_class_name('ant-btn').click() # 点击“登录”按钮
# 采用xpath定位登陆按钮,
# driver.find_element_by_xpath('//*[@id="root"]/div/div[3]/form/button').click()
time.sleep(2)
driver.find_element_by_xpath('/html/body/div[2]/div/div[2]/div[12]/div[2]/div/p').click() # 更多
driver.find_element_by_xpath('/html/body/div[2]/div/div[2]/div[12]/div[2]/ul/li[11]/a[1]').click()
time.sleep(10)
windows = driver.window_handles
driver.switch_to.window(windows[-1])
driver.find_element_by_id('V1_CTRL5').click() # 点击电话输入框
driver.find_element_by_id('V1_CTRL5').clear() # 清空输入框
driver.find_element_by_id('V1_CTRL5').send_keys(user_phone) # 自动敲入电话
time.sleep(1)
driver.find_element_by_id('V1_CTRL6').click() # 点击公寓输入框
driver.find_element_by_id('V1_CTRL6').clear() # 清空输入框
driver.find_element_by_id('V1_CTRL6').send_keys(user_local) # 自动敲入公寓
driver.find_element_by_class_name("selection").click() # 选择导员姓名输入
time.sleep(1)
driver.find_element_by_class_name("select2-search__field").send_keys(user_teacher)
time.sleep(1)
# win32api.keybd_event(17,0,0,0) #ctrl键位码是17
# win32api.keybd_event(17,0,win32con.KEYEVENTF_KEYUP,0)
driver.find_element_by_class_name("select2-search__field").send_keys(Keys.ENTER)
time.sleep(1)
# <a class="command_button_content" name="infoplus_action_6355_1" id="infoplus_action_6355_1"><nobr>提交</nobr></a>
driver.find_element_by_id('V1_CTRL8').click() # 点击导员电话
driver.find_element_by_id('V1_CTRL8').clear() # 清空输入框
driver.find_element_by_id('V1_CTRL8').send_keys(user_teacher_number) # 自动敲入
time.sleep(1)
driver.find_element_by_id('V1_CTRL9').click() # 点击进出校报备输入框
time.sleep(1)
driver.find_element_by_id('V1_CTRL11').click() # 点击出校事由及行程安排输入框
driver.find_element_by_id('V1_CTRL11').clear() # 清空输入框
driver.find_element_by_id('V1_CTRL11').send_keys(user_thing1) # 自动敲入
time.sleep(1)
driver.find_element_by_id('V1_CTRL18').click() # 点击 出校类别其他
time.sleep(1)
driver.find_element_by_id('V1_CTRL20').click() # 点击开始时间
driver.find_element_by_id('V1_CTRL20').clear() # 清空输入框
driver.find_element_by_id('V1_CTRL20').send_keys(user_time_begin) # 自动敲入
time.sleep(1)
driver.find_element_by_id('V1_CTRL22').click() # 点击结束时间
driver.find_element_by_id('V1_CTRL22').clear() # 清空输入框
driver.find_element_by_id('V1_CTRL22').send_keys(user_time_end) # 自动敲入
time.sleep(1)
driver.find_element_by_id('V1_CTRL6').click() # 点击公寓输入框
driver.find_element_by_id('V1_CTRL26').click() # 点击目的地
driver.find_element_by_id('V1_CTRL26').clear() # 清空输入框
driver.find_element_by_id('V1_CTRL26').send_keys(user_thing2) # 自动敲入
driver.find_element_by_class_name("command_button_content").click()
time.sleep(2)
driver.find_element_by_xpath('/html/body/div[9]/div/div[2]/button[1]').click()
time.sleep(2)
driver.find_element_by_xpath('/html/body/div[10]/div/div[2]/button').click()
time.sleep(5)
driver.quit()
print("自动报备已完成")
return 0
#schedule_time1.py
#!/usr/bin/env python
# -*- coding:utf-8 -*-
#@Time : 2021/3/30 20:09
#@Author: Ang
#@File : schedule_time1.py
from auto_web1 import auto_web_1
import datetime
import time
from apscheduler.schedulers.blocking import BlockingScheduler
def func():
now = datetime.datetime.now()
now1= datetime.datetime.now().time()
time_sub=24+6-now1.hour
begin_day=datetime.datetime(2021, 3, 30, 6, 20, 20, 846283)
ts = now.strftime('%Y-%m-%d %H:%M:%S')
print("自动任务部署运行中,请勿关闭")
print('当前时间 :', ts,"距离任务开始还有",begin_day.hour+24-now.hour,"小时")
print("该系统已运行",now.day-begin_day.day,"天")
def func_autoweb1():
# 耗时2S
now = datetime.datetime.now()
ts = now.strftime('%Y-%m-%d %H:%M:%S')
auto_web_1()
print('当前时间:', ts)
time.sleep(2)
def dojob():
# 创建调度器:BlockingScheduler
scheduler = BlockingScheduler()
# 添加任务,时间间隔10s
scheduler.add_job(func, 'interval', hours=1, id='test_job1')
#hours=1
# scheduler.add_job(func_autoweb1, 'interval', seconds=30, id='test_job2')
# 添加任务, 定时每天 06:20:20秒执行任务
scheduler.add_job(func_autoweb1, 'cron', day_of_week='0-6', hour=6, minute=20, second=20)
scheduler.start()
print("Chen 的自动报备程序运行中...")
now = datetime.datetime.now()
ts = now.strftime('%Y-%m-%d %H:%M:%S')
print('开始时间:', ts)
dojob()
标签:网页,V1,python,driver,element,实现,time,id,find 来源: https://blog.csdn.net/weixin_42035347/article/details/115337025
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。