美文网首页
月收入录入

月收入录入

作者: Noza_ea8f | 来源:发表于2023-06-09 18:49 被阅读0次
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]) + ' 录入完毕!')

相关文章

  • 总结指纹锁使用事项

    一、关于指纹 指纹的录入 指纹的录入不同于手机指纹录入。手机录入指纹时,一个手指的不同部位都会被录...

  • 应付管理节点下的业务

    付款录入 1.付款录入:使用银行存款支付 2.付款录入:使用银行承兑汇票支付 3.付款录入:使用商业承兑汇票支付 ...

  • day19-16-IO流(读取转换流)/day19-17-IO流

    需求:通过键盘录入数据。当录入一行数据后,就将该行数据进行打印。如果录入的数据是over,那就停止录入 通过刚才的...

  • 我选择梦游

    月收入五万以上,可考虑欧美中端游。 月收入三万,可考虑低端欧洲游。 月收入一万到两万,请选择东南亚游。 月收入低于...

  • 停不下来的输入法

    最近发现一个问题,在文字录入方面,自己对语音录入的需求越来越高。只要能语音录入,就不愿意打字录入,可能是感觉语音录...

  • 批量录入

    啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊,组织语言真的好困难,希望自己慢慢会有进步 最近做了一个批量录入题目的项目,技术实...

  • 键盘录入

    如何进行键盘数据录入呢? 导句import java.util.Scanner;位置在class上面。 创建录入对...

  • 录入案件

    法制科催着月底前将案件录入系统。 未东跟我的案件相似,且罚款金额也不大。我早承诺要帮他输入案件,于是,今天一早就做...

  • 录入分数

    API: 录入分数 URL: /create_score_club_background/ 请求方式: POST...

  • 键盘录入

    早期的键盘录入是通过System来获取从键盘上输入的数据的,System.in获取一个输入流,通过这个输入流来获取...

网友评论

      本文标题:月收入录入

      本文链接:https://www.haomeiwen.com/subject/cdmzedtx.html