多用户登录系统操作流程——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.')





posted @ 2019-01-03 15:36  Philly008  阅读(1222)  评论(0编辑  收藏  举报