python+selenium 奥兰系统自动化测试

selenium的小试牛刀

郑重说明:此代码程序仅为学习交流用途

前提:

1.python运行环境

2.selenium模块

安装selenium模块:打开cmd命令提示符,输入pip install selenium进行安装

3.需要有浏览器以及浏览器驱动

例如我的是谷歌chrom浏览器,需要下载chrome driver驱动,版本之间要对应上

chrome driver下载地址:CNPM Binaries Mirror

python+selenium 奥兰系统自动化测试_第1张图片

Linux

python+selenium 奥兰系统自动化测试_第2张图片python+selenium 奥兰系统自动化测试_第3张图片

Windows

python+selenium 奥兰系统自动化测试_第4张图片

python+selenium 奥兰系统自动化测试_第5张图片

本人已将自己selenium所用到的chrome和对应的chromedriver打包好,包括Linux和Windows的都有,可以直接下载放在自己的电脑上使用,如有需要的可以私信我

具体实现代码如下:

奥兰系统每日三检体温填报

# -*- coding: utf-8 -*
import time
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.common.by import By
from selenium.webdriver.chrome.service import Service
import random

def user_login():
    # 这里是找到输入框,发送要输入的用户名和密码,模拟登陆
    browser.find_element(By.XPATH,"//*[@id='username']").send_keys(name)
    browser.find_element(By.XPATH,"//*[@id='password']").send_keys(password)
    browser.find_element(By.XPATH,"//*[@class='auth_login_btn primary full_width']").click()      # 找到登录按钮并点击
    try:
        browser.find_element(By.XPATH,"/html/body/form/table/tbody/tr/td/table[2]/tbody/tr/td/div/span/a[5]").click()      # 点击登陆后的事务办理按钮
        print("登陆成功!")
        print("正在填报")
    except:
        print("您提供的用户名或者密码有误\n登陆失败")
        browser.quit()
    return name,password        

# 晨检
def chenjian():
    time_check = "晨检"
    # 点击晨检
    browser.find_element(By.XPATH,"//*[@id='my_menu']/div/a[9]").click()  
    print("晨检开始填报")
    browser.execute_script('window.scrollTo(0,document.body.scrollHeight)')   #滑到底部
    time.sleep(3)
    # 切换frame窗口
    browser.switch_to.frame(0)
    # 点击下一步
    next_ = browser.find_element(By.XPATH,'//*[@id="div0"]/table/tbody/tr[3]/td/img')
    next_.click()    
    #点击勾选确定阅读
    browser.find_element(By.XPATH,'//*[@id="zzcnd"]').click()    
    # 体温填报  
    print("正在填写体温")
    temp = round(random.uniform(36.0,36.6),1)       # 随机生成35到36的数并保留一位小数
    browser.switch_to.window(browser.window_handles[0])
    browser.switch_to.frame(0)
    browser.find_element(By.XPATH,'//*[@id="tw_cj"]').clear()    #先清空输入框
    browser.find_element(By.XPATH,"//*[@id='tw_cj']").send_keys(temp)    #输入体温
    print("温度填写完成")
    print('-------------------------')
    print('今日体温:',temp)
    print("正在增加记录")
    browser.find_element(By.XPATH,"//*[@id='dcbc']").click()
#     browser.execute_script("arguments[0].click();", element)
    return time_check

# 午检
def wujian():
    time_check = '午检'
    # 点击午检
    browser.find_element(By.XPATH,"//*[@id='my_menu']/div/a[10]").click()  
    print("午检开始填报")    
    # 体温填报  
    print("正在填写体温")
    temp = round(random.uniform(36.0,36.6),1)       # 随机生成35到36的数并保留一位小数
    browser.switch_to.window(browser.window_handles[0])
    browser.switch_to.frame(0)
    browser.find_element(By.XPATH,'//*[@id="tw_wj"]').clear()    #先清空输入框
    browser.find_element(By.XPATH,"//*[@id='tw_wj']").send_keys(temp)    #输入体温
    print("温度填写完成")
    print('----------------------')
    print('今日体温:',temp)
    print("----------------------\n正在增加记录")
    browser.find_element(By.XPATH,'/html/body/form/div/table/tbody/tr/td/table[3]/tbody/tr[1]/td/input[2]').click()
#     browser.execute_script("arguments[0].click();", element)
    return time_check

# 晚检
def wanjian():
    time_check = '晚检'
    # 点击晚检
    browser.find_element(By.XPATH,"//*[@id='my_menu']/div/a[11]").click()  
    print("晚检开始填报")    
    # 体温填报  
    print("正在填写体温")
    temp = round(random.uniform(36.0,36.6),1)       # 随机生成35到36的数并保留一位小数
    browser.switch_to.window(browser.window_handles[0])
    browser.switch_to.frame(0)
    browser.find_element(By.XPATH,'//*[@id="tw_w"]').clear()    #先清空输入框
    browser.find_element(By.XPATH,"//*[@id='tw_w']").send_keys(temp)    #输入体温
    print("温度填写完成")
    print('----------------------')
    print('今日体温:',temp)
    print("----------------------\n正在增加记录")
    element = browser.find_element(By.XPATH,"//*[@id='databc']")
    browser.execute_script("arguments[0].click();", element)
    return time_check
    
# 获取填报成功反馈信息    
def get_alertText(time_check):
    try:
        text=browser.switch_to.alert.text    # 获取弹窗文本
        print(text)
        if '成功' in text:      # 根据弹窗内容返回是否填报成功
            print("{}填报成功!".format(time_check))
        else:
            print("{}填报失败!".format(time_check))
        browser.switch_to.alert.accept()         # 关闭alert窗口
        return text
    except:
        return "{}填报成功".format(time_check)

# 未勾选
def text_warning():    
        print("未勾选我已阅读,正在重新点击!")
#         browser.switch_to.alert.accept()  #关闭提示窗口
        browser.find_element(By.XPATH,'//*[@id="zzcnd"]').click()    #点击勾选确定阅读
        print("正在重新增加记录")
        element = browser.find_element(By.XPATH,"//*[@id='dcbc']")
        browser.execute_script("arguments[0].click();", element)
        print("我已阅读高校疫情防控警示教育典型案例")

# 退出程序        
def exit():
#     browser.switch_to.alert.accept()         # 关闭alert窗口
    time.sleep(1)
    browser.quit()   #     #关闭浏览器
    
if __name__=="__main__":    
    stu_name=["用户名1","用户名2"]
    stu_passwd=["密码1","密码2"]
    for i in range(len(stu_name)):
        name = stu_name[i]
        password = stu_passwd[i]   
        chrome_path = "/opt/google/chrome/chrome"
        driver_path = "/home/liu/chromedriver"    
        options = webdriver.ChromeOptions()   # 模拟浏览器打开网站
        options.add_argument('--headless')    #设置chrome浏览器无界面模式
        options.add_argument('--no-sandbox')
        options.add_argument('--disable-dev-shm-usage')
        options.binary_location = chrome_path    #传入chrome安装地址
        # browser=webdriver.Chrome(chrome_options=options,executable_path=driver_path)  
        s=Service(driver_path)    #传入驱动地址
        browser = webdriver.Chrome(options=options,service=s)
        url = 'http://xxx'   #要打开的网址
        browser.get(url)     # 浏览器打开
        browser.implicitly_wait(20)   #  隐式等待
        browser.maximize_window()    # 将窗口最大化
        print("正在进入奥蓝系统")
        print("正在登陆中...")
        name,password = user_login()    # 用户登录
        now_localtime = time.strftime("%H:%M:%S", time.localtime())     # 现在的时间
        # 判断时间,根据时间填报三检
        strs = "="
        if "6:00:00" < now_localtime < "10:00:00":
            print("现在是北京时间:",now_localtime,"\n可以开始填报晨检啦!")
            time_check = chenjian()    #  调用晨检函数
            text = get_alertText(time_check)
            if "请勾选我已阅读高校疫情防控警示教育典型案例" in text:
                text_warning()
                get_alertText(time_check)
            exit()
            print("{}的{}程序已完成,程序退出!\n{}".format(name,time_check,strs*40))
        elif "10:30:00" < now_localtime < "13:30:00":
            print("现在是北京时间:",now_localtime,"\n可以开始填报午检啦!")
            time_check = wujian()    #  调用午检函数   
            text = get_alertText(time_check)
            exit()
            print("{}的{}程序已完成,程序退出!\n{}".format(name,time_check,strs*40))
        elif "16:00:00" < now_localtime < "23:00:00":
            print("现在是北京时间:",now_localtime,"\n可以开始填报晚检啦!")
            time_check = wanjian()    #  调用晚检函数
            text = get_alertText(time_check)     # 填报是否成功
            print("{}的{}程序已完成,程序退出!\n{}".format(name,time_check,strs*40))
            exit()  # 程序退出

运行结果如下

python+selenium 奥兰系统自动化测试_第6张图片

你可能感兴趣的:(Python,python)