月收入录入

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]) + ' 录入完毕!')

上一篇 下一篇

猜你喜欢

热点阅读