月收入录入
2023-06-09 本文已影响0人
Noza_ea8f
import pandas as pd
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.common.by import By
from lib import user_info
import time
df = pd.read_excel(io='月收入录入.xlsx', sheet_name='Sheet1')
hbhs = list(df['户编号'])
# 打开国服系统
# 等待提示
def wait_key():
while True:
message = input('请输入“空格键”继续:')
if message == ' ':
break
print('你输入的是 ' + message + '!')
browser = webdriver.Chrome()
url = 'http://211.90.39.112/login.aspx'
browser.get(url)
browser.find_element(By.NAME, 'LOGINNAME').send_keys(user_info.username_m)
browser.find_element(By.ID, 'txtPASSWORD').send_keys(user_info.pwd_m)
# 登录
wait_key() # 输入验证码
handles = browser.window_handles # 获得所有窗口句柄
browser.switch_to.window(handles[-1]) # 取最新的
wait_key() # 等待录入
browser.switch_to.parent_frame() # 返回父框架
iframe = browser.find_element(By.CSS_SELECTOR, '#iframe_box > div:nth-child(2) > iframe')
browser.switch_to.frame(iframe)
def modify_data(i):
'''
用于修改月份数据
:param i: 第一个修改的户主编‘月收入登记‘链接号是1,第二个是2一此类对,一页10个
:return:
'''
browser.find_element(By.XPATH, f'//*[@id="datalist"]/tbody/tr[{i}]/td[10]/a').click() # 点击‘月收入登记‘链接
time.sleep(3)
# 进入下一层,修改
iframe2 = browser.find_element(By.ID, f'layui-layer-iframe{i}') # 最让人费解的就是这里的编号随点击次数递增
# browser.switch_to.frame(iframe)
browser.switch_to.frame(iframe2)
# browser.find_element(By.XPATH, '//*[@id="ysrlist0"]/tr[4]/td[1]/a').click() # 修改
browser.find_element(By.XPATH, '//*[@id="ysrlist0"]/tr[5]/td[1]/a').click() # 修改
time.sleep(3)
# 进入下一页,复制上一月
iframe3 = browser.find_element(By.ID, 'layui-layer-iframe1')
browser.switch_to.frame(iframe3)
browser.find_element(By.ID, 'btnCopy').click()
time.sleep(3)
browser.find_element(By.ID, 'btnSave').click()
time.sleep(1)
browser.find_element(By.XPATH, '//*[@id="btnClose"]').click() # 关闭
time.sleep(3)
browser.switch_to.parent_frame() # 返回父框架
browser.find_element(By.XPATH, '//*[@id="btnClose"]').click()
browser.switch_to.parent_frame() # 返回父框架
# for i in range(1, 3):
# modify_data(i)
# browser.find_element(By.ID, 'datalist_next').click() # 下一页
def modify_data2(i, hbh):
'''
用于修改月份数据
:param i: 第一个修改的户主编‘月收入登记‘链接号是1,第二个是2一此类对,一页10个
:param hbh: 户编号
:return:
'''
# 传入用户编号
browser.find_element(By.XPATH, '//*[@id="webform"]/ul[2]/li[6]/dl/dd[1]/input').clear()
browser.find_element(By.XPATH, '//*[@id="webform"]/ul[2]/li[6]/dl/dd[1]/input').send_keys(hbh)
# 点击查询
browser.find_element(By.XPATH, '//*[@id="webform"]/ul[2]/li[6]/dl/dd[4]').click()
ActionChains(browser).click(browser.find_element(By.XPATH, '//*[@id="datalist"]/tbody/tr/td[10]/a')).perform()
# browser.find_element(By.XPATH, '//*[@id="datalist"]/tbody/tr/td[10]/a').click() # 点击‘月收入登记‘链接
time.sleep(3)
# 进入下一层,修改
iframe2 = browser.find_element(By.ID, f'layui-layer-iframe{i}') # 随传入次数递增
# browser.switch_to.frame(iframe)
browser.switch_to.frame(iframe2)
# browser.find_element(By.XPATH, '//*[@id="ysrlist0"]/tr[4]/td[1]/a').click() # 修改 不知道为什么,到第二个人就无法点开了,然后程序报错
browser.find_element(By.XPATH, '//*[@id="ysrlist0"]/tr[5]/td[1]/a').click() # 修改 尽管无法点开链接,但是对象还是可以找到,这样就可以利用鼠标事件进行点击了
time.sleep(3)
# 进入下一页,复制上一月
iframe3 = browser.find_element(By.ID, 'layui-layer-iframe1')
browser.switch_to.frame(iframe3)
browser.find_element(By.ID, 'btnCopy').click()
time.sleep(3)
browser.find_element(By.ID, 'btnSave').click()
time.sleep(1)
# browser.find_element(By.XPATH, '//*[@id="btnClose"]').click() # 关闭
time.sleep(3)
browser.switch_to.parent_frame() # 返回父框架
browser.find_element(By.XPATH, '//*[@id="btnClose"]').click()
browser.switch_to.parent_frame() # 返回父框架
for i in range(len(hbhs)):
modify_data2(i + 1, hbhs[i])
print(str(hbhs[i]) + ' 录入完毕!')