多用户登录系统操作流程——Python多线程

# -*- coding: utf-8 -*-
# @Time       : 2019/1/3 10:03
# @Author     : Philly
# @File       : multi_login.py
# @Description: 多用户并发登录
from selenium import webdriver
import threading
from time import sleep
from selenium.webdriver.common.action_chains import ActionChains
import random
from selenium.webdriver.common.keys import Keys

def login(user_name, password, barcode):
    # 设置chromedriver具体访问地址
    chromedriver = r"C:\Program Files (x86)\Google\Chrome\Application\chromedriver.exe"
    # browser = webdriver.Chrome(executable_path=chromedriver)
    browser = webdriver.Chrome(executable_path=chromedriver)
    # 设置浏览器窗口最大化
    browser.maximize_window()

    # 谷歌浏览器访问物流地址
    browser.get(‘http://khlis.yktest.com/logistics/home‘)
    sleep(2)
    browser.find_element_by_id(‘user_name‘).send_keys(user_name)
    browser.find_element_by_id(‘password‘).send_keys(password)
    browser.find_element_by_id(‘editBtn‘).click()
    sleep(3)
    print(user_name + ‘登录了‘)

    ml = browser.find_element_by_xpath(‘//*[@id="site-menu"]/div[1]‘)
    ActionChains(browser).move_to_element(ml).perform()
    sleep(2)
    gl = browser.find_element_by_xpath(‘//*[@id="site-menu"]/div[2]/ul/li[1]/span‘)
    ActionChains(browser).double_click(gl).perform()
    sleep(1)
    lr = browser.find_element_by_link_text(‘标本录入‘).click()
    sleep(3)

    pp = browser.find_element_by_xpath(‘//*[@id="sitt"]/div[1]/div[3]/ul‘)
    ActionChains(browser).move_to_element(pp).perform()

    browser.find_element_by_id(‘siadd‘).send_keys(Keys.F8)

    browser.find_element_by_id(‘barcode‘).send_keys(barcode)
    yy = browser.find_element_by_id(‘comboText3‘)
    yy.clear()
    yy.send_keys(‘医院‘)
    sleep(1)
    yy.send_keys(Keys.ENTER)

    browser.find_element_by_id(‘subject_name‘).send_keys(‘xingming‘)
    xb = browser.find_element_by_xpath(‘//*[@id="form1"]/div[1]/div/div[1]/div/div[1]/div[5]/div[2]/span/input[1]‘)
    xb.send_keys(‘男‘)
    xb.send_keys(Keys.SPACE)
    sleep(1)
    xb.send_keys(Keys.ENTER)
    sleep(1)
    browser.find_element_by_xpath(‘//*[@id="form1"]/div[1]/div/div[1]/div/div[1]/div[6]/div[2]/span/input[1]‘).send_keys(‘32‘)

    xm = browser.find_element_by_id(‘comboText10‘)
    xm.clear()
    xm.send_keys(‘离子‘)
    sleep(1)
    xm.send_keys(Keys.ENTER)
    sleep(1)

    browser.find_element_by_id(‘sisave‘).click()

if __name__ == ‘__main__‘:

    user_barcode = {
        ‘gl01‘: ‘201901038600‘,
        ‘wl001‘: ‘201901038300‘,
        ‘wl002‘: ‘201901038200‘
    }

    threads = []    # 定义一个线程池
    for thr in user_barcode.keys():
        th1 = threading.Thread(target=login, args=(thr, ‘123abc‘, user_barcode[thr]))  # 创建线程
        threads.append(th1)

    # th2 = threading.Thread(target=login, args=(‘wl001‘, ‘123abc‘))
    # threads.append(th2)

    for th in threads:
        th.start()  # 启动线程
        th.join()   # 等待线程执行完成

    print(‘all have end.‘)

原文地址:https://www.cnblogs.com/liuliu3/p/10214522.html

时间: 2024-10-28 23:19:01

多用户登录系统操作流程——Python多线程的相关文章

python 多用户登录

Python多用户登录 需求 让用户输入用户名密码 认证成功后显示欢迎信息 输错三次后退出程序 可以支持多个用户登录 (提示,通过列表存多个账户信息) 用户3次认证失败后,退出程序,再次启动程序尝试登录时,还是锁定状态(提示:需把用户锁定的状态存到文件里) 流程图 代码 1 #! /usr/bin/env python 2 # -*- coding: utf-8 -*- 3 #多用户登录 4 5 user_list={ 6 'u01':{'password':'123'}, 7 'u02':{'

python练习小工具之模拟登录系统

一.题目 模拟写一个登录系统,要求 : 每个用户都有三次登录机会,超过三次锁定! 用户锁定不影响其他用户 二.代码: #coding:utf-8 Count = {"san": ["123456", 3], "Ling": ["6666",3]} #值中第一列是密码,第二列是用户状态 while True:     User=raw_input("用户名:").strip()     Passwd=raw_

作业1#python用列表实现多用户登录,并有三次机会

1 username = ["juebai","haha"] 2 password = [123,456] 3 count = 0 4 while count < 3: 5 _username = input("用户名:") 6 _password = int(input("密码:")) 7 if _username == username[0] and _password == password[0]: 8 print

python 容器 用户注册登录系统

1. 列表和普通变量有什么区别 列表是数据类型,普通变量是用来存储数据的 可以把列表赋值给普通变量 2.存在列表 a = [11, 22, 33], 如何向列表中添加(增)新元素 44 a.append(44) 或者 a.insert(3,44) #索引号为3 3.对列表排序 a = [11,22,33,2] b = sorted(a) #创建了一个新的列表 ,a.sort()修改a列表 print(b) # [2, 11, 22, 33, 44] b = a.sort() print(b) #

Python多线程、进程、协程

本节内容 操作系统发展史介绍 进程.与线程区别 python GIL全局解释器锁 线程 语法 join 线程锁之Lock\Rlock\信号量 将线程变为守护进程 Event事件 queue队列 生产者消费者模型 Queue队列 开发一个线程池 进程 语法 进程间通讯 进程池 操作系统发展史 手工操作(无操作系统) 1946年第一台计算机诞生--20世纪50年代中期,还未出现操作系统,计算机工作采用手工操作方式. 手工操作程序员将对应于程序和数据的已穿孔的纸带(或卡片)装入输入机,然后启动输入机把

从零起步 系统入门Python爬虫工程师

课程目录及大纲: 第1章 从零开始 系统入门python爬虫工程师-课程导学 获取课程资料链接:点击这里获取 这是一门专门为爬虫初学者打造的教程,从零起步的系统化教程,课程内容从理论到实践,一层一层深入讲解,尤其是课程实战环节:一步一步带你进行多场景项目实践 ,让你能够举一反三从容面对以后的数据抓取问题,最后关于就业部分,重点,难点,针对性讲解,轻松应对面试,最终达到就业水准.... 1-1 从零开始 系统入门python爬虫工程师-课程导学 试看第2章 彻底解决让人头疼的环境搭建问题 视频教程

python多线程

http://blog.csdn.net/pipisorry/article/details/45306973 CPU-bound(计算密集型) 和I/O bound(I/O密集型) I/O bound 指的是系统的CPU效能相对硬盘/内存的效能要好很多,此时,系统运作,大部分的状况是 CPU 在等 I/O (硬盘/内存) 的读/写,此时 CPU Loading 不高.CPU bound 指的是系统的 硬盘/内存 效能 相对 CPU 的效能 要好很多,此时,系统运作,大部分的状况是 CPU Lo

linux服务器登录邮件告警python程序

linux服务器用户登录邮件告警python小程序,一旦有人登录服务器就发邮件通知系统管理员.作为SA有些服务器只有自己可以登录的,你懂的!可有时候会被研发坑,被运维坑.为了全面掌控服务器,配置一个用户登录系统邮件通知,是很必要滴! 比较渣渣的一个脚本,不过在次基础上可以很容易的扩展滴.直接上代码了. #!/usr/bin/python#coding:utf8import smtplibimport stringimport psutilimport datetime HOST = "smtp.

Python多线程(threading)学习总结

注:此文除了例子和使用心得是自己写的,很多都是Python核心编程中的原文.原文文风应该能看出来,就不每个地方单独表明出处了. 线程(有时被称为轻量级进程)跟进程有些相似,不同的是,所有的线程运行在同一个进程中,共享相同的运行环境.它们可以想像成是在主进程或"主线程"中并行运行的"迷你进程". 线程有开始,顺序执行和结束三部分.它有一个自己的指令指针,记录自己运行到什么地方.线程的运行可能被抢占(中断),或暂时的被挂起(也叫睡眠),让其它的线程运行,这叫做让步.一个