栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

selunium python自动化脚本快速处理重复性操作

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

selunium python自动化脚本快速处理重复性操作

1、需求说明

        根据查询条件日历选择需要填写的具体日期,展开每个人员,填报人员的每日上午、下午办公情况以及客户结算方式,并保存。

        脚本简单,关键在于分析页面元素,寻找其中的规律。

2、代码实现

import time
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.select import Select


def search():
    browser = webdriver.Chrome()
    url = r'https:地址'
    browser.get(url)
    browser.maximize_window()
    browser.implicitly_wait(10)
    browser.find_element(By.XPATH, '//*[@id="username"]').send_keys('用户名')
    browser.find_element(By.XPATH, '//*[@id="password"]').send_keys('密码')
    browser.find_element(By.XPATH, '//*[@id="btn_login"]').click()  # 登录
    time.sleep(1)
    browser.find_element(By.ID, 'menu_MAINDIR1524929854187').click()
    time.sleep(1)
    browser.find_element(By.XPATH, '//*[@id="hrdAttendanceReportManagement"]/div').click()
    time.sleep(5)
    browser.switch_to.frame('module_hrdAttendanceReportManagement')  # frame切换
    time.sleep(1)
    browser.find_element(By.CSS_SELECTOR, 'input#statisticDateCostSharing').click()  # 点击日历
    time.sleep(1)
    # 日历的起止日期选择,根据实际情况重新定位
    browser.find_element(By.XPATH, '/html/body/div[5]/div[1]/div[2]/table/tbody/tr[1]/td[7]').click()
    browser.find_element(By.XPATH, '/html/body/div[5]/div[1]/div[2]/table/tbody/tr[2]/td[7]').click()
    time.sleep(1)
    browser.find_element(By.XPATH, '/html/body/div[5]/div[3]/div/button[1]').click()  # 日期选择确认按钮
    time.sleep(1)
    browser.find_element(By.XPATH, '//*[@id="select2-departmentTypeOrCustomer-container"]/span').click()  # 部门
    time.sleep(1)
    browser.find_element(By.XPATH, '//*[@id="select2-departmentTypeOrCustomer-results"]/li[21]').click()
    time.sleep(2)
    browser.find_element(By.XPATH, '//*[@id="select2-resourcePoolAndProjectTeamQuery-container"]/span').click()  # 项目组
    time.sleep(1)
    browser.find_element(By.XPATH, '//*[@id="select2-resourcePoolAndProjectTeamQuery-results"]/li[1]').click()
    browser.find_element(By.XPATH,
                         '/html/body/section/div/div/div/div[2]/div[1]/div/div[6]/span/button').click()  # 查询按钮
    time.sleep(15)
    n = 1
    for i in range(1, 21, 2):  # 遍历人员,序号为1、3、5、7、9、11、13、15、17、19,每页10条数据(可以添加分页操作)
        f_id = '//*[@id="hrdStaffTable"]/tbody/tr[' + str(i) + ']/td[3]'
        f_name = '//*[@id="hrdStaffTable"]/tbody/tr[' + str(i) + ']/td[4]'  # 人员姓名,打印检查
        s_button = '//*[@id="hrdStaffTable"]/tbody/tr[' + str(i) + ']/td[14]/button'  # 保存按钮
        browser.find_element(By.XPATH, f_id).click()  # 点击符号+展开
        time.sleep(1)
        for j in range(5, 8):  # 遍历日期,参数为具体需要选择的日期,5月5日-5月8日
            selamid = 'signInStatus_2022/05/0' + str(j) + '_11218_1559_是_否_否_否'
            selam_balance_id = 'signInCustomerSettlement_2022/05/0' + str(j) + '_11218_1559_是_否_否_否'
            selpmid = 'signOutStatus_2022/05/0' + str(j) + '_11218_1559_是_否_否_否'
            selpm_balance_id = 'signOutCustomerSettlement_2022/05/0' + str(j) + '_11218_1559_是_否_否_否'
            selam = Select(browser.find_element(By.ID, selamid))  # 上午
            selam.select_by_value('在家办公')
            selam_balance = Select(browser.find_element(By.ID, selam_balance_id))
            selam_balance.select_by_value('全额结算')
            selpm = Select(browser.find_element(By.ID, selpmid))  # 下午
            selpm.select_by_value('在家办公')
            selpm_balance = Select(browser.find_element(By.ID, selpm_balance_id))
            selpm_balance.select_by_value('全额结算')
        browser.find_element(By.XPATH, s_button).click()  # 保存按钮
        time.sleep(1)
        browser.find_element(By.XPATH, '/html/body/div[6]/div[2]/div/div/div/div/div[4]/button[1]').click()
        time.sleep(1)
        browser.find_element(By.XPATH, '/html/body/div[6]/div[2]/div/div/div/div/div[4]/button').click()
        time.sleep(2)
        f_name = browser.find_element(By.XPATH, f_name).text
        print(f'{n} {f_name} 维护完成')
        n += 1
    time.sleep(3)


if __name__ == '__main__':
    search()

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/923373.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号