diff --git a/public/__init__.py b/public/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/public/action.py b/public/action.py new file mode 100644 index 0000000000000000000000000000000000000000..faf8f74727716ade6a0722cba9a2af2e2c4b72c1 --- /dev/null +++ b/public/action.py @@ -0,0 +1,107 @@ + +from selenium import webdriver +from selenium.webdriver import ChromeOptions + +from public.tools import wait + + +def settle_accounts_point(chrome,product_id,old_type="中心库入库结算",new_type="",flag=1): + if (flag==1): + wait() + chrome.find_element_by_xpath('//span[text()="%s"]'%old_type).click() + wait() + chrome.find_element_by_xpath('//span[text()="批量导入"]').click() + wait(2) + chrome.find_element_by_xpath('//input[@id="basic_goodsName" and @placeholder="编号/名称/简拼"]').send_keys(product_id) + wait() + chrome.find_element_by_xpath('(//span[text()="查 询"])[2]').click() + wait() + # 勾选产品前面的复选框 + try: + chrome.find_element_by_xpath('//td[@title="%s"]/preceding-sibling::td/label/span/input' % product_id).click() + wait() + chrome.find_element_by_xpath('(//span[text()="确 定"])[1]').click() + except: + print('没查询出产品') + chrome.find_element_by_xpath('(//span[text()="取 消"])[1]').click() + wait() + elif (flag==2): + wait() + chrome.find_element_by_xpath('//span[text()="%s"]' % old_type).click() + wait() + chrome.find_element_by_id('form_item_goodsName').send_keys(product_id) + wait() + chrome.find_element_by_xpath('(//span[text()="查 询"])').click() + try: + chrome.find_element_by_xpath('//input[@type="checkbox"]').click() + except: + return + wait() + chrome.find_element_by_xpath('//span[contains(text(),"批量转")]').click() + wait() + # chrome.find_element_by_xpath('//label[text()="调整后规则"]/parent::div/following-sibling::div').click() + chrome.find_element_by_xpath('(//span[@class="ant-select-selection-item"])[2]').click() + wait() + chrome.find_element_by_xpath('//div[text()="中心库出库结算"]').click() + wait() + chrome.find_element_by_xpath('// span[text() = "确 定"]').click() + + +def nGuiBrowserObject(): + opt = ChromeOptions() # 创建 Chrome 参数对象 + opt.headless = False # 把 Chrome 设置成无界面模式,windows/Linux 皆可 + # opt.headless = True # 无界面 + opt.add_argument('--start-maximized') + opt.add_argument('--window-size=1920x887') + chrome = webdriver.Chrome(options=opt,executable_path="c:/python34/chromedriver.exe") # 创建无界面对象 + return chrome +#打开网页 +def openBrowser(url): + # chrome = webdriver.Chrome() #因为firefox是在此处定义的 + chrome=nGuiBrowserObject() + chrome.implicitly_wait(10) #隐式等待 10秒 + chrome.get(url) + return chrome #所以函数必须返回firefox,后面的脚本才能使用 +#dbshop前台登录 +def logIn(chrome,username,password): + chrome.find_element_by_xpath('//input[@placeholder="请输入用户名"]').clear() + chrome.find_element_by_xpath('//input[@placeholder="请输入用户名"]').send_keys(username) + # chrome.find_element_by_xpath('//input[@placeholder="请输入密码"]').send_keys(password) + chrome.find_element_by_xpath('//span[text()="登 录"]').click() +#dbshop前台修改密码 +def changePassword(firefox,password,newPassword): + firefox.find_element_by_link_text("用户中心").click() + firefox.find_element_by_link_text("账户信息").click() + firefox.find_element_by_link_text("密码修改").click() + firefox.find_element_by_id("old_user_password").send_keys(password) + firefox.find_element_by_id("user_password").send_keys(newPassword) + firefox.find_element_by_id("user_password_con").send_keys(newPassword) + firefox.find_element_by_xpath('//button[@type="submit"]').click() +#dbshop前台退出 +def logOut(firefox): + firefox.find_element_by_link_text("退出").click() +#dbshop后台登录 +def logInAdmin(firefox): + firefox.find_element_by_id("user_name").send_keys("admin") + firefox.find_element_by_id("user_passwd").send_keys("123456") + firefox.find_element_by_xpath('//button[@class="btn"]').click() +#dbshop进入后台二级菜单 +def enterMenu3(chrome,menu1,menu2,menu3): + wait() + chrome.find_element_by_xpath(menu1).click() + wait() + chrome.find_element_by_xpath(menu2).click() + wait() + chrome.find_element_by_xpath(menu3).click() + wait() +# #dbshop进入后台三级菜单 +# def enterMenu3(firefox,menu1,menu2,menu3): +# firefox.find_element_by_link_text(menu1).click() +# from selenium.webdriver.common.action_chains import ActionChains # 导入ActionChains类 +# mouse = ActionChains(firefox) # 以浏览器为参数,实例化一个对象mouse,用于模拟鼠标操作浏览器 +# element = firefox.find_element_by_link_text(menu2) # 先定位到要操作的对象element +# mouse.move_to_element(element).perform() # 鼠标移动到元素element上,perform()是立即的意思 +# firefox.find_element_by_link_text(menu3).click() +#dbshop项目页面切换 +def switch_page(a,firefox): + firefox.switch_to.window(firefox.window_handles[a-1]) diff --git a/public/mail1.py b/public/mail1.py new file mode 100644 index 0000000000000000000000000000000000000000..8610854c4850bc1866b947ca745a3b4a80760e0d --- /dev/null +++ b/public/mail1.py @@ -0,0 +1,45 @@ +from smtplib import SMTP_SSL +from email.header import Header +from email.mime.text import MIMEText +from email.mime.multipart import MIMEMultipart +from email.mime.application import MIMEApplication +from email.mime.image import MIMEImage + +send_usr = '18627022503@163.com' # 发件人 +send_pwd = 'EBJFCICTFEONFQEO' # 授权码,邮箱设置 +reverse = '18627022503@163.com' # 接收者 +content = '2022

python官网链接如下:

' \ + '

python

' +#content 内容设置 +html_img = '

{content}

' # html格式添加图片 +email_server = 'smtp.163.com' +email_title = '脚本执行成功了' # 邮件主题 + +def send_email1(image_path,email_title): + msg = MIMEMultipart() # 构建主体 + msg['Subject'] = Header(email_title,'utf-8') # 邮件主题 + msg['From'] = send_usr # 发件人 + msg['To'] = Header('xhs','utf-8') # 收件人--这里是昵称 + # msg.attach(MIMEText(content,'html','utf-8')) # 构建邮件正文,不能多次构造 + attchment = MIMEApplication(open(r'D:/test.xlsx','rb').read()) # 文件 + attchment.add_header('Content-Disposition','attachment',filename='test.png') + msg.attach(attchment) # 添加附件到邮件 + # f = open("D:\\PycharmProjects\\cmic_python_JobLog\\xhsmail\\2023-04-30_090212.png", 'rb') #打开图片 + f = open(image_path, 'rb') #打开图片 + msgimage = MIMEImage(f.read()) + f.close() + msgimage.add_header('Content-ID', '') # 设置图片 + msg.attach(msgimage) + msg.attach(MIMEText(html_img,'html','utf-8')) # 添加到邮件正文 + try: + smtp = SMTP_SSL(email_server) #指定邮箱服务器 + smtp.ehlo(email_server) # 部分邮箱需要 + smtp.login(send_usr,send_pwd) # 登录邮箱 + smtp.sendmail(send_usr,reverse,msg.as_string()) # 分别是发件人、收件人、格式 + smtp.quit() # 结束服务 + print('邮件发送完成--') + except: + print('发送失败') + +# if __name__ == '__main__': +# send_email1() diff --git a/public/tools.py b/public/tools.py new file mode 100644 index 0000000000000000000000000000000000000000..4e28a748137bd346feb4b1cc6d27b423513e47b6 --- /dev/null +++ b/public/tools.py @@ -0,0 +1,214 @@ +import subprocess +from datetime import timedelta, date + + +def IsFileContentRight(url): + f = open(url, "r", encoding="utf-8") # 从文件中读取内容 + str1=f.read() + import re + if (re.search(",",str1)!=None or re.search(":",str1)!=None): + return False + else: + f.close() + f = open(url, "r", encoding="utf-8") # 从文件中读取内容 + mylist1 = f.readlines() + + x = 0 + j = 0 + count=0 + for i in mylist1: + if (re.match("子任务数:", i) != None): + print("找到了") + j = i[5:6] + print('子任务数', j) + break + for i in mylist1: + if (re.match("任务", i) != None): + print('找到了%s个任务' % x) + x = x + 1 + print("真实子任务个数", x) + for i in mylist1: + if (re.match("实际工时", i) != None): + count=i.count(",") + count = int(count) + 1 + # break + if (j == str(x)==str(count)): + return True + else: + return False + + +def End_Chrome_Progress(): + subprocess.call("TASKKILL /f /IM CHROME.EXE") + subprocess.call("TASKKILL /f /IM CHROMEDRIVER.EXE") + + +# 读取文件所有内容 +def readFile_all(url): + f = open(url, "r", encoding="utf-8") # 从文件中读取内容 + t = f.read() + f.close() + return t + + +# 读取文件内容的函数,需要1个参数文件地址 +def readFile(f): + # f = open(url, "r") # 从文件中读取内容 + t = f.readline() + # f.close() + return t + + +# 覆盖写入 +def writeFile(url, text): + f = open(url, "w", encoding="utf-8") + f.write(text) + f.close() + + +# 追加写入 +def writeFile_append(url, text): + f = open(url, "a", encoding="utf-8") + f.write(get_time_hms()+":::"+text+'\n') + f.close() + + +# 读取文件内容的函数,对内容进行处理,去掉冒号前面的内容 +def readFileContent(url): + f = open(url, "r", encoding="UTF-8") # 从文件中读取内容 + t = f.readlines() + path1 = get_pro_path() + writeFile(path1 + '/add/Everydaylog.txt', "") # 先清空所有内容 + writeFile(path1 + '/update/update_Everyday_log.txt', "") # 先清空所有内容 + import re + for i in t: + if i == '\n': + break + mylist = re.split(":", i) + # print(mylist) + if mylist[0] == "实际工时": + mylist[1] = mylist[1].replace('\n', "") + writeFile_append(path1 + '/add/Everydaylog.txt', mylist[1]) + writeFile_append(path1 + '/update/update_Everyday_log.txt', mylist[1]) + f.close() + return t + + +def get_time(type=1): + import time + if (type==1): + t = time.strftime("%Y-%m-%d", time.localtime()) + else: + t = time.strftime("%Y%m", time.localtime()) + # t = time.strftime("%Y-%m-%d-%H-%M-%S", time.localtime()) + return t + + +def get_time_add(days_aa): + import time + # t = time.strftime("%Y-%m-%d", datetime.datetime.now()) + tomorrow = (date.today() + timedelta(days=days_aa)).strftime("%Y-%m-%d") + return tomorrow + + +def get_time_hms(): + import time + # t = time.strftime("%Y-%m-%d", time.localtime()) + timedelta(days=1) + t = time.strftime("%Y-%m-%d-%H-%M-%S", time.localtime()) + return t + + +def get_localhost_ip(): + import socket + ip = socket.gethostbyname(socket.gethostname()) + ip = ip[0:5] + print("http://" + ip) + return "http://" + ip + + +# 获取当前项目的根目录的路径 +def get_pro_path(): + import os + # print('根据当前文件获取当前文件所在目录的路径', os.path.dirname(__file__)) + curPath = os.path.abspath(os.path.dirname(__file__)) # 获取当前文件的所在目录的绝对路径 + # print(curPath) # C:\Users\xhs\Desktop\dbshop项目相关文档2\dbshop1\main + # #将当前文件的所在目录的绝对路径进行分离,分离成C:\Users\xhs\Desktop\dbshop项目相关文档2\dbshop1 和main,存到元组中 + print(os.path.split(curPath)) + rootPath = os.path.split(curPath)[0] # [0]表示元组中的为一个元素 + # print('当前项目的根目录', rootPath) + return rootPath + + +# 截图 +def getErrorPhoto(chrome,type=1): + #1正常截图 2错误截图 + import time + if type==1: + imgName = time.strftime("%Y%m%d_%H%M%S", time.localtime()) + ".png" + pro_path = get_pro_path() # 获取项目的根目录的路径 + image_path = pro_path + "//logs//" + imgName + chrome.get_screenshot_as_file(image_path) + return imgName, image_path + else: + imgName = time.strftime("%Y%m%d_%H%M%S", time.localtime()) + ".png" + pro_path = get_pro_path() # 获取项目的根目录的路径 + image_path = pro_path + "//logs_error//" + imgName + chrome.get_screenshot_as_file(image_path) + return imgName, image_path + + +# +def is_file_exist(filename): + try: + f = open(filename, 'r', encoding='utf-8') + except: + return False + else: + return True +#获取时间的分 +def get_time_m(): + import time + from datetime import datetime + nows = int(time.time()) + # timestamp = 1591239600 + + dt = datetime.fromtimestamp(nows) + # print(dt.minute, dt.second) + return dt.minute + # if dt.minute == 0 and dt.second == 0: + # print('s ') + # elif dt.minute == 50 and dt.second == 0: + # print('s ') +#判断时间区间,制定提交时间 +def get_submit_time(m): + if m>=0 and m<=10: + return 20 + elif m>=11 and m<=20: + return 30 + elif m>=21 and m<=30: + return 40 + elif m>=31 and m<=40: + return 50 + elif m>=41 and m<=50: + return 59 + elif m>=51 and m<=59: + return 10 + else: + return m+10 +#判断时间区间,制定提交时间 +#判断时间区间,制定提交时间 +def get_submit_time1(m): + if m >= 0 and m <= 30: + return 40 + elif m >30 and m <= 59: + return 10 + else: + return m + 20 + + +if __name__ == '__main__': + # End_Chrome_Progress() + # get_localhost_ip() + # readFileContent(r'..\add\main_Everydaylog.txt') + print(IsFileContentRight(r'..\add\main_Everydaylog.txt')) \ No newline at end of file diff --git a/testcase/od/test1.py b/testcase/od/test1.py new file mode 100644 index 0000000000000000000000000000000000000000..855004d05ae1c9220e574390023bc7ee97ee33c6 --- /dev/null +++ b/testcase/od/test1.py @@ -0,0 +1,326 @@ +import datetime +import threading +import time +import traceback + +from airtest.core.api import * +from selenium import webdriver +from selenium.webdriver import DesiredCapabilities +from selenium.webdriver.common.keys import Keys +from airtest_selenium.proxy import * +from selenium.webdriver import Chrome, ChromeOptions +from airtest.core.api import * +from airtest_selenium.proxy import * + +from mail1 import send_email1 +from public.tools import * + + + + +# chrome = webdriver.Chrome(chrome_options=opt) + +def job(): + print("这是一个需要执行的任务。。。。。") + create_salesorder() + print("当前线程的个数:", threading.active_count()) + time.sleep(1) + print("当前线程的信息:", threading.current_thread()) + + +def create_salesorder(type=1): + try: + import time + pro_path = get_pro_path() + start = time.clock() + # caps = DesiredCapabilities().CHROME + # caps["pageLoadStrategy"] = "normal" # complete + # caps["pageLoadStrategy"] = "eager" # interactive + # caps["pageLoadStrategy"] = "none" + # chrome = webdriver.Chrome(desired_capabilities=caps) + opt = ChromeOptions() # 创建 Chrome 参数对象 + # opt.headless = True # 把 Chrome 设置成无界面模式,windows/Linux 皆可 + opt.headless = False # 把 Chrome 设置成无界面模式,windows/Linux 皆可 + opt.add_argument('--start-maximized') + opt.add_argument('--window-size=1280x1024') + # chrome = Chrome(options=opt) # 创建无界面对象 + # chrome = WebChrome(chrome_options=opt) + chrome = WebChrome(chrome_options=opt) + # chrome=webdriver.Chrome() + chrome.implicitly_wait(20) + chrome.get("http://10.17.65.200:8088/portal/") + # chrome.get("http://10.17.65.207:8088/uat/r/w") + sleep(2) + chrome.implicitly_wait(30) + chrome.maximize_window() + chrome.find_element_by_id('input1').clear() + chrome.find_element_by_id('input1').send_keys('admin') + chrome.find_element_by_id('input2').clear() + chrome.find_element_by_id('input2').send_keys('Gyxc1234') + chrome.find_element_by_id('input2').send_keys(Keys.ENTER) + while True: + try: + if(chrome.find_element_by_xpath('//span[text()="退出"]').is_displayed()==True): + break + except: + continue + # 切换所属公司 + chrome.find_element_by_class_name('changeCom').click() + sleep(1) + chrome.find_element_by_xpath('//span[text()="国药集团北京医疗器械有限公司"]/following-sibling::button').click() + sleep(1) + chrome.find_element_by_xpath('// button[text() = "确定"]').click() + sleep(1) + # chrome.find_element_by_xpath('//div[text()="销售管理"]').click() + # actions = ActionChains(chrome) + # actions.move_to_element(chrome.find_element_by_xpath('//div[text()="销售业务"]')).perform() + # chrome.find_element_by_xpath('//span[text()="销售订单"]').click() + order_link = chrome.find_element_by_xpath('//span[text()="手术请领单"]') + chrome.execute_script("arguments[0].click();", order_link) + chrome.switch_to.frame(chrome.find_element_by_xpath('(//iframe[@class="metro-main-frame"])[2]')) + sleep(2) + chrome.find_element_by_xpath('//span[text()="新建"]').click() + sleep(2) + # chrome.switch_to.frame(chrome.find_element_by_xpath('//iframe[contains(@name,"awsui-dialog-iframe")]')) + # #获取订单号 + # + # orderno=chrome.find_element_by_xpath('//div[text() = "请领单号 "]/following-sibling::div/span').text + # print(orderno) + # # chrome.switch_to.default_content() + # sleep(2) + # # while True: + # # try: + # # if chrome.find_element_by_xpath('//div[text()="订单公司名称 "]').is_displayed(): + # # print(chrome.find_element_by_xpath('//div[text()="订单公司名称 "]').text) + # # break + # # except: + # # continue + # # print(chrome.find_element_by_xpath('//div[text()="订单公司名称 "]').text) + # sleep(2) + # # chrome.find_element_by_xpath( + # # '//div[text()="公司名称 "]/following-sibling::div/div/div/div/div/div/div/div/span/span/i').click() + # # chrome.find_element_by_xpath('//input[@placeholder="模糊检索:公司名称,公司编码"]').send_keys('国药集团北京') + # # chrome.find_element_by_xpath('//input[@placeholder="模糊检索:公司名称,公司编码"]').send_keys(Keys.ENTER) + # # chrome.find_element_by_xpath('//button[@class="el-button el-button--primary el-button--mini"]').click() + # # chrome.find_element_by_xpath('(//span[@class="el-radio__inner"])[1]').click() + # # chrome.find_element_by_xpath('//span[@class="ensureBtn"]/button').click() + # # chrome.find_element_by_xpath('//button[@class="el-button el-button--primary el-button--mini"]').click() + # + # # 业务员名称 + # chrome.find_element_by_xpath( + # '//div[text()="业务员名称 "]/following-sibling::div/div/div/div/div/div/div/div/span/span/i').click() + # chrome.find_element_by_xpath('//input[@placeholder="模糊检索:员工编码,员工名称,部门编码,部门名称"]').send_keys('chenshuheng') + # chrome.find_element_by_xpath('//input[@placeholder="模糊检索:员工编码,员工名称,部门编码,部门名称"]').send_keys( + # Keys.ENTER) + # chrome.find_element_by_xpath( + # '(//div[text()="chenshuheng"])[3]/ancestor-or-self::td/preceding-sibling::td/div/label/span/span').click() + # chrome.find_element_by_xpath('(//span[@class="ensureBtn"]/button[1])[1]').click() + # + # #手术类型 + # chrome.find_element_by_xpath('(//input[@placeholder="请选择" and @type="text"])').click() + # sleep(1) + # chrome.find_element_by_xpath('//li[text()="初次手术"]').click() + # sleep(1) + # #手术种类 + # chrome.find_element_by_xpath('(//input[@placeholder="请选择" and @type="text"])[2]').click() + # sleep(1) + # chrome.find_element_by_xpath('//li[text()="髋关节"]').click() + # sleep(1) + # chrome.find_element_by_xpath('//label[text()="手术日期 "]/following-sibling::div/div').click() + # sleep(1) + # chrome.find_element_by_xpath('//div[ @class ="el-date-table-cell"] // span[text()="31"]').click() + # + # #客户信息页签 + # chrome.find_element_by_xpath('//div[text()="客户信息"]').click() + # chrome.find_element_by_xpath('//div[text()="客户名称 "]/following-sibling::div/div/div/div/div/div/div/div/span/span/i').click() + # chrome.find_element_by_xpath('//input[@placeholder="模糊检索:客户编码,客户名称"]').send_keys('北京大学第三医院') + # chrome.find_element_by_xpath('//input[@placeholder="模糊检索:客户编码,客户名称"]').send_keys(Keys.ENTER) + # # chrome.find_element_by_xpath('//span/input[@type="radio" and @value="03105272b49986351ef7eb2930b5454de"]').click() + # btn_div= chrome.find_element_by_xpath('//span/input[@type="radio" and @value="02f94bb93be972567166f428524aa3b43"]') + # chrome.execute_script("arguments[0].click();", btn_div) + # chrome.find_element_by_xpath('(//button[@class="el-button el-button--primary el-button--default"])[3]').click() + # + # #医院名称 + # chrome.find_element_by_xpath( + # '//div[text()="医院名称 "]/following-sibling::div/div/div/div/div/div/div/div/span/span/i').click() + # chrome.find_element_by_xpath('//input[@placeholder="模糊检索:客户编码,客商名称"]').send_keys('北京大学第三医院') + # chrome.find_element_by_xpath('//input[@placeholder="模糊检索:客户编码,客商名称"]').send_keys(Keys.ENTER) + # # chrome.find_element_by_xpath('//span/input[@type="radio" and @value="03105272b49986351ef7eb2930b5454de"]').click() + # btn_div = chrome.find_element_by_xpath( + # '//span/input[@type="radio" and @value="0c4d395678c596b20aa6c2a2fef3483d4"]') + # chrome.execute_script("arguments[0].click();", btn_div) + # chrome.find_element_by_xpath('(//button[@class="el-button el-button--primary el-button--default"])[4]').click() + # + # # chrome.find_element_by_xpath('//div[text()="仓库信息"]').click() + # # chrome.find_element_by_xpath( + # # '//div[text()="合同号 "]/following-sibling::div/div/div/div/div/div/div/div/span/span/i').click() + # # chrome.find_element_by_xpath('//input[@placeholder="模糊检索:合同号,合同协议号,对方编码,项目名称,项目编码,业态编码,参考部门,参考部门编码,参考业务员,参考业务员编码,产品线名称,产品线编码,合同类型,合同属性"]').send_keys('38443') + # # chrome.find_element_by_xpath('//input[@placeholder="模糊检索:合同号,合同协议号,对方编码,项目名称,项目编码,业态编码,参考部门,参考部门编码,参考业务员,参考业务员编码,产品线名称,产品线编码,合同类型,合同属性"]').send_keys(Keys.ENTER) + # # chrome.find_element_by_xpath('//div[@class="multiple-header string_col" and text()="38443"]/ancestor-or-self::td/preceding-sibling::td/div/label/span/span').click() + # # chrome.find_element_by_xpath('(//button[@class="el-button el-button--primary el-button--default"])[4]').click() + # # #业务员名称 + # # chrome.find_element_by_xpath( + # # '//div[text()="业务员名称 "]/following-sibling::div/div/div/div/div/div/div/div/span/span/i').click() + # # chrome.find_element_by_xpath('//input[@placeholder="模糊检索:业务员名称,业务员编码,业务部门名称,业务部门编码,部门类型编码"]').send_keys('杨春刚') + # # chrome.find_element_by_xpath('//input[@placeholder="模糊检索:业务员名称,业务员编码,业务部门名称,业务部门编码,部门类型编码"]').send_keys(Keys.ENTER) + # # chrome.find_element_by_xpath('(//div[text()="杨春刚"])[3]/ancestor-or-self::td/preceding-sibling::td/div/label/span/span').click() + # # chrome.find_element_by_xpath('(//span[@class="ensureBtn"]/button[1])[4]').click() + # # #其他信息页签 + # # chrome.find_element_by_xpath('//div[text()="其他信息"]').click() + # # chrome.find_element_by_xpath('//div[@cid="AWSUI.SwitchButton"]//div/div/div/div/span[1]').click() + # # 子表信息录入 + # chrome.find_element_by_xpath('//div[text()="主体信息"]').click() + # chrome.find_element_by_xpath('//span[text()="添加商品"]').click() + # chrome.find_element_by_xpath( + # '//input[@placeholder="模糊检索:商品编码,商品名称"]').send_keys( + # '10214724') + # chrome.find_element_by_xpath( + # '//input[@placeholder="模糊检索:商品编码,商品名称"]').send_keys( + # Keys.ENTER) + # sleep(1) + # chrome.find_element_by_xpath('(//span[@class="el-checkbox__inner"])[4]').click() + # chrome.find_element_by_xpath('(//div[@class="el-dialog__body"]/div[2]/span/button[1]/span)[4]').click() + # sleep(3) + # # 滚动条右拉 + # # chrome.execute_script("document.getElementsByClassName('vxe-table--footer-wrapper body--wrapper')[0].scrollLeft = 2000"); + # + # element=chrome.find_element_by_xpath('//td[@colid="col_75"]') + # element.click() + # sleep(2) + # # element.send_keys("1") + # # chrome.execute_script("document.getElementsByClassName('awsui-input-number-right')[0].value='1'") + # chrome.find_element_by_class_name('awsui-input-number-right').send_keys('1') + # sleep(2) + # chrome.find_element_by_xpath('//td[@colid="col_76"]').click() + # #滚动条右拉 + # # document.getElementsByClassName('vxe-table--footer-wrapper body--wrapper')[0].scrollLeft = 5000 + # # chrome.execute_script("document.getElementsByClassName('vxe-table--footer-wrapper body--wrapper')[0].scrollLeft = 2000"); + # # element = chrome.find_element_by_xpath('//td[@colid="col_197"]') + # # element.click() + # # sleep(6) + # # chrome.execute_script("document.getElementsByClassName('awsui-input-number-right')[0].value='8'") + # # sleep(2) + # # element = chrome.find_element_by_xpath('//td[@colid="col_198"]') + # # element.click() + # # sleep(6) + # # chrome.execute_script("document.getElementsByClassName('awsui-input-number-right')[0].value='8'") + # # sleep(2) + # # lock = threading.Lock() + # # lock.acquire() + # #方案一============================开始 + # # if user_count<=5: + # if type==1: + # import datetime + # now = datetime.datetime.now() + # one_minutes_later = now + datetime.timedelta(minutes=1) + # now = now.strftime('%Y-%m-%d %H:%M') + # one_minutes_later = one_minutes_later.strftime('%Y-%m-%d %H:%M') + # # print('bbbbbbbb'+one_minutes_later) + # while True: + # now = datetime.datetime.now().strftime('%Y-%m-%d %H:%M') + # # print('变化的时间' + now) + # if now == one_minutes_later: + # print('时间到了') + # chrome.find_element_by_xpath('//span[text()="提交"]').click() + # break + # # 方案一============================结束 + # #方案二===============开始 + # if type==2: + # m=get_time_m() #当前时间的分钟 + # m1=get_submit_time(m)#计划提交时间的分钟 + # while True: + # m2=get_time_m() #循环获取当前的分 + # # sleep(60) + # if (m2==m1): + # chrome.find_element_by_xpath('//span[text()="提交"]').click() + # break + # #方案二===============结束 + # # lock.release() + # sleep(2) + # # chrome.find_element_by_xpath('//button[@class="el-button el-button--primary el-button--mini"]').click() + # # chrome.switch_to.default_content() + # # chrome.switch_to.frame(chrome.find_element_by_xpath('(//iframe[@class="metro-main-frame"])[2]')) + # # sleep(20) + # while True: + # try: + # if chrome.find_element_by_xpath('//span[text()="%s"]'%orderno).is_displayed()==True: + # print('//span[text()="%s"]'%orderno) + # break + # except: + # continue + #进入手术配货单 + chrome.switch_to.default_content() + chrome.find_element_by_xpath('//span[@class="awsui-tabs-icon close"]').click() + sleep(1) + order_link = chrome.find_element_by_xpath('//span[text()="手术配货单"]') + chrome.execute_script("arguments[0].click();", order_link) + chrome.switch_to.frame(chrome.find_element_by_xpath('(//iframe[@class="metro-main-frame"])[2]')) + sleep(2) + chrome.find_element_by_xpath('//label[text()="请领单号"]/parent::div/div/div/div/input').send_keys('QLD23082800017B') + sleep(1) + chrome.find_element_by_xpath('//label[text()="请领单号"]/parent::div/div/div/div/input').send_keys(Keys.ENTER) + sleep(1) + sleep(1) + text1=chrome.find_element_by_xpath('(//span[text()="PHD23082800007B"])[2]').text + print(text1) + element = chrome.find_element_by_xpath('(//span[@class="vxe-checkbox--icon vxe-checkbox--unchecked-icon"])[2]') + chrome.execute_script("arguments[0].click();", element) + sleep(1) + chrome.find_element_by_xpath('//span[text()="批量提交"]').click() + sleep(1) + chrome.find_element_by_xpath('//button[@class="el-button el-button--primary el-button--mini"]/span[text()="确定"]').click() + print('手术请领单创建完成') + end = time.clock() + print(start, end) + print('CPU执行时间: ', end - start) + imgInfo = getErrorPhoto(chrome) + imgName = imgInfo[0] + image_path = imgInfo[1] + # info=orderno+'执行耗时'+str(end - start) + now = get_time() + # writeFile_append(pro_path + '/logs/catalina.out', info) + # send_email1(image_path, info) + except Exception as e: + print('出现异常') + # 将日志写入到文件中单独存储 + pro_path = get_pro_path() + traceback.print_exc() + imgInfo = getErrorPhoto(chrome) + imgName = imgInfo[0] + image_path = imgInfo[1] + print(imgName, image_path) + print(repr(e)) + info = repr(e) + now = get_time() + writeFile_append(pro_path + '/logs/logerror%s.txt' % now, info) + # send_email1(image_path, info) +if __name__ == "__main__": + # 创建多线程时, 需要制定该线程执行的任务.name线程名字 target目标函数名 + # t1 = threading.Thread(target=job,name="job1") + # t2 = threading.Thread(target=job,name="job2") + # t1.start() + # t2.start() + # opt = ChromeOptions() # 创建 Chrome 参数对象 + # # opt.headless = True # 把 Chrome 设置成无界面模式,windows/Linux 皆可 + # opt.headless = False # 把 Chrome 设置成无界面模式,windows/Linux 皆可 + # opt.add_argument('--start-maximized') + # opt.add_argument('--window-size=1280x1024') + # # chrome = Chrome(options=opt) # 创建无界面对象 + # chrome = WebChrome(chrome_options=opt) # airtest中的类 + + count=1 + for i in range(count): + t = threading.Thread(target=job) + t.start() + t.join() + +def start1(): + count = 5 + for i in range(count): + t = threading.Thread(target=job) + t.start() + t.join() + + # print(threading.active_count()) + # print("程序执行结束.....") + # create_salesorder() diff --git "a/testcase/od/uat_\351\224\200\345\224\256\350\256\242\345\215\225.py" "b/testcase/od/uat_\351\224\200\345\224\256\350\256\242\345\215\225.py" new file mode 100644 index 0000000000000000000000000000000000000000..147c65c1710872f3a3b6e2e622df01b5f5130c47 --- /dev/null +++ "b/testcase/od/uat_\351\224\200\345\224\256\350\256\242\345\215\225.py" @@ -0,0 +1,173 @@ +import threading +import time +from airtest.core.api import * +from selenium import webdriver +from selenium.webdriver import DesiredCapabilities +from selenium.webdriver.common.keys import Keys +from airtest_selenium.proxy import * +from selenium.webdriver import Chrome, ChromeOptions +from airtest.core.api import * +from airtest_selenium.proxy import * + +def job(): + print("这是一个需要执行的任务。。。。。") + create_salesorder() + print("当前线程的个数:", threading.active_count()) + time.sleep(1) + print("当前线程的信息:", threading.current_thread()) + + +def create_salesorder(): + import time + start = time.clock() + # caps = DesiredCapabilities().CHROME + # caps["pageLoadStrategy"] = "normal" # complete + # caps["pageLoadStrategy"] = "eager" # interactive + # caps["pageLoadStrategy"] = "none" + # chrome = webdriver.Chrome(desired_capabilities=caps) + opt = ChromeOptions() # 创建 Chrome 参数对象 + # opt.headless = True # 把 Chrome 设置成无界面模式,windows/Linux 皆可 + opt.headless = False # 把 Chrome 设置成无界面模式,windows/Linux 皆可 + opt.add_argument('--start-maximized') + opt.add_argument('--window-size=1280x1024') + # chrome = Chrome(options=opt) # 创建无界面对象 + # chrome = WebChrome(chrome_options=opt) + chrome = WebChrome(chrome_options=opt) + # chrome=webdriver.Chrome() + chrome.implicitly_wait(20) + # chrome.get("http://10.17.65.200:8088/portal/") + chrome.get("http://10.17.65.207:8088/uat/r/w") + sleep(2) + chrome.implicitly_wait(30) + chrome.maximize_window() + chrome.find_element_by_id('input1').send_keys('admin') + chrome.find_element_by_id('input2').send_keys('Gyxc1234') + chrome.find_element_by_id('input2').send_keys(Keys.ENTER) + while True: + try: + if(chrome.find_element_by_xpath('//span[text()="退出"]').is_displayed()==True): + break + except: + continue + + chrome.find_element_by_xpath('//div[text()="销售管理"]').click() + actions = ActionChains(chrome) + actions.move_to_element(chrome.find_element_by_xpath('//div[text()="销售业务"]')).perform() + chrome.find_element_by_xpath('//span[text()="销售订单"]').click() + chrome.switch_to.frame(chrome.find_element_by_xpath('(//iframe[@class="metro-main-frame"])[2]')) + + chrome.find_element_by_xpath('//span[text()="新建"]').click() + sleep(4) + chrome.switch_to.frame(chrome.find_element_by_xpath('//iframe[contains(@name,"awsui-dialog-iframe")]')) + + # chrome.switch_to.default_content() + sleep(4) + # while True: + # try: + # if chrome.find_element_by_xpath('//div[text()="订单公司名称 "]').is_displayed(): + # print(chrome.find_element_by_xpath('//div[text()="订单公司名称 "]').text) + # break + # except: + # continue + print(chrome.find_element_by_xpath('//div[text()="订单公司名称 "]').text) + + + sleep(2) + chrome.find_element_by_xpath( + '//div[text()="订单公司名称 "]/following-sibling::div/div/div/div/div/div/div/div/span/span/i').click() + chrome.find_element_by_xpath('//input[@placeholder="模糊检索:公司名称,公司编码"]').send_keys('国药集团北京') + chrome.find_element_by_xpath('//input[@placeholder="模糊检索:公司名称,公司编码"]').send_keys(Keys.ENTER) + chrome.find_element_by_xpath('(//span[@class="el-radio__inner"])[1]').click() + + chrome.find_element_by_xpath('//span[@class="ensureBtn"]/button').click() + chrome.find_element_by_xpath('//button[@class="el-button el-button--primary el-button--mini"]').click() + chrome.find_element_by_xpath('//div[text()="出库仓库 "]/following-sibling::div/div/div/div/div/div/div/div/span/span/i').click() + chrome.find_element_by_xpath('//input[@placeholder="模糊检索:仓库编码,仓库名称,是否传WMS,所属公司名称"]').send_keys('北京强生非') + chrome.find_element_by_xpath('//input[@placeholder="模糊检索:仓库编码,仓库名称,是否传WMS,所属公司名称"]').send_keys(Keys.ENTER) + # chrome.find_element_by_xpath('//span/input[@type="radio" and @value="03105272b49986351ef7eb2930b5454de"]').click() + btn_div= chrome.find_element_by_xpath('//span/input[@type="radio" and @value="03105272b49986351ef7eb2930b5454de"]') + chrome.execute_script("arguments[0].click();", btn_div) + chrome.find_element_by_xpath('(//button[@class="el-button el-button--primary el-button--default"])[3]').click() + chrome.find_element_by_xpath('//div[text()="客户及合同信息"]').click() + chrome.find_element_by_xpath( + '//div[text()="合同号 "]/following-sibling::div/div/div/div/div/div/div/div/span/span/i').click() + chrome.find_element_by_xpath('//input[@placeholder="模糊检索:合同号,合同协议号,对方编码,项目名称,项目编码,业态编码,参考部门,参考部门编码,参考业务员,参考业务员编码,产品线名称,产品线编码,合同类型,合同属性"]').send_keys('40080') + chrome.find_element_by_xpath('//input[@placeholder="模糊检索:合同号,合同协议号,对方编码,项目名称,项目编码,业态编码,参考部门,参考部门编码,参考业务员,参考业务员编码,产品线名称,产品线编码,合同类型,合同属性"]').send_keys(Keys.ENTER) + chrome.find_element_by_xpath('//div[@class="multiple-header string_col" and text()="40080"]/ancestor-or-self::td/preceding-sibling::td/div/label/span/span').click() + chrome.find_element_by_xpath('(//button[@class="el-button el-button--primary el-button--default"])[4]').click() + #客户名称 + chrome.find_element_by_xpath( + '//div[text()="客户名称 "]/following-sibling::div/div/div/div/div/div/div/div/span/span/i').click() + chrome.find_element_by_xpath('//input[@placeholder="模糊检索:客户编码,客户名称,收货地址号,收货地址信息,公司编码,货币码,税率/税区,客户分类,联系人,联系人电话"]').send_keys('北京大学第三医院') + chrome.find_element_by_xpath('//input[@placeholder="模糊检索:客户编码,客户名称,收货地址号,收货地址信息,公司编码,货币码,税率/税区,客户分类,联系人,联系人电话"]').send_keys(Keys.ENTER) + chrome.find_element_by_xpath('(//div[text()="北京大学第三医院"])[3]/ancestor-or-self::td/preceding-sibling::td/div/label/span/span').click() + chrome.find_element_by_xpath('(//span[@class="ensureBtn"]/button[1])[4]').click() + # 业务员名称 + chrome.find_element_by_xpath( + '//div[text()="业务员名称 "]/following-sibling::div/div/div/div/div/div/div/div/span/span/i').click() + chrome.find_element_by_xpath('//input[@placeholder="模糊检索:业务员名称,业务员编码,业务部门名称,业务部门编码,部门类型编码"]').send_keys('杨春刚') + chrome.find_element_by_xpath('//input[@placeholder="模糊检索:业务员名称,业务员编码,业务部门名称,业务部门编码,部门类型编码"]').send_keys(Keys.ENTER) + chrome.find_element_by_xpath( + '(//div[text()="杨春刚"])[3]/ancestor-or-self::td/preceding-sibling::td/div/label/span/span').click() + chrome.find_element_by_xpath('(//span[@class="ensureBtn"]/button)[13]').click() + #其他信息页签 + chrome.find_element_by_xpath('//div[text()="其他信息"]').click() + chrome.find_element_by_xpath('//div[@cid="AWSUI.SwitchButton"]//div/div/div/div/span[1]').click() + # 子表信息录入 + chrome.find_element_by_xpath('//div[text()="主体信息"]').click() + chrome.find_element_by_xpath('//span[text()="添加商品"]').click() + chrome.find_element_by_xpath( + '//input[@placeholder="模糊检索:商品编码,商品名称,规格型号,主计量单位,销售计量单位,厂家物料编码,存储条件说明,生产企业编码,供应商编码,行类型,商品性质,批发价,进口/国产/港澳台,件包数,产品备注,是否免备案,产品描述"]').send_keys( + '10006179') + chrome.find_element_by_xpath( + '//input[@placeholder="模糊检索:商品编码,商品名称,规格型号,主计量单位,销售计量单位,厂家物料编码,存储条件说明,生产企业编码,供应商编码,行类型,商品性质,批发价,进口/国产/港澳台,件包数,产品备注,是否免备案,产品描述"]').send_keys( + Keys.ENTER) + chrome.find_element_by_xpath('(//span[@class="el-checkbox__inner"])[4]').click() + chrome.find_element_by_xpath('(//div[@class="el-dialog__body"]/div[2]/span/button[1]/span)[6]').click() + sleep(10) + element=chrome.find_element_by_xpath('//td[@colid="col_177"]') + element.click() + sleep(6) + # element.send_keys("1") + chrome.execute_script("document.getElementsByClassName('awsui-input-number-right')[0].value='1'"); + sleep(3) + #滚动条右拉 + # document.getElementsByClassName('vxe-table--footer-wrapper body--wrapper')[0].scrollLeft = 5000 + chrome.execute_script("document.getElementsByClassName('vxe-table--footer-wrapper body--wrapper')[0].scrollLeft = 2000"); + element = chrome.find_element_by_xpath('//td[@colid="col_197"]') + element.click() + sleep(6) + chrome.execute_script("document.getElementsByClassName('awsui-input-number-right')[0].value='8'"); + sleep(2) + element = chrome.find_element_by_xpath('//td[@colid="col_198"]') + element.click() + sleep(6) + chrome.execute_script("document.getElementsByClassName('awsui-input-number-right')[0].value='8'"); + sleep(2) + chrome.find_element_by_xpath('//span[text()="提交"]').click() + sleep(2) + chrome.find_element_by_xpath('//button[@class="el-button el-button--primary el-button--mini awsui-button awsui-button--primary"]//span[text()="确定"]').click() + chrome.switch_to.default_content() + while True: + try: + if chrome.find_element_by_xpath('//span[text()="新建"]').is_displayed()==True: + break + except: + continue + print('销售订单创建完成') + end = time.clock() + print(start, end) + print('CPU执行时间: ', end - start) +if __name__ == "__main__": + # 创建多线程时, 需要制定该线程执行的任务.name线程名字 target目标函数名 + # t1 = threading.Thread(target=job,name="job1") + # t2 = threading.Thread(target=job,name="job2") + # t1.start() + # t2.start() + for i in range(1): + t = threading.Thread(target=job) + t.start() + + # print(threading.active_count()) + # print("程序执行结束.....") + # create_salesorder() diff --git "a/testcase/od/\345\244\232\346\230\216\347\273\206/main.py" "b/testcase/od/\345\244\232\346\230\216\347\273\206/main.py" new file mode 100644 index 0000000000000000000000000000000000000000..5c8ee40f3df6b2325430a7442d019da04ab08e9e --- /dev/null +++ "b/testcase/od/\345\244\232\346\230\216\347\273\206/main.py" @@ -0,0 +1,51 @@ +import threading +import time +from airtest.core.api import * +from selenium import webdriver +from selenium.webdriver.common.keys import Keys +from airtest_selenium.proxy import * +def job3(): + print("这是一个需要执行的任务。。。。。") + from testcase.od.多明细.销售订单_多明细100 import create_salesorder + create_salesorder(2) + print("当前线程的个数:", threading.active_count() ) + time.sleep(1) + print("当前线程的信息:", threading.current_thread()) +def job1(): + print("这是一个需要执行的任务。。。。。") + # from testcase.od.多明细.调拨出库单多明细100 import create_salesorder1 + from testcase.od.多明细.手术请领单多明细100 import create_salesorder + create_salesorder(2) + print("当前线程的个数:", threading.active_count() ) + time.sleep(1) + print("当前线程的信息:", threading.current_thread()) +if __name__ == "__main__": + # 创建多线程时, 需要制定该线程执行的任务.name线程名字 target目标函数名 + # t1 = threading.Thread(target=create_salesorder,name="job1") + # t2 = threading.Thread(target=create_salesorder1,name="job2") + # t1.start() + # t2.start() + count = 25 + # semaphore = threading.Semaphore(value=1) + # for i in range(count): + # if i<15: + # t = threading.Thread(target=job3) + # t.start() + # if i>=15: + # t = threading.Thread(target=job1) + # t.start() + # # t.join() + for i in range(count): + t = threading.Thread(target=job1) + t.start() + print(threading.active_count()) + # sleep(30) + # sys.exit(0) + + + # print("程序执行结束.....") + # for i in range(10): + # from testcase.od.销售订单 import * + # start1() + + diff --git "a/testcase/od/\345\244\232\346\230\216\347\273\206/\345\257\204\345\224\256\345\200\237\345\207\272\345\215\225\345\244\232\346\230\216\347\273\206100.py" "b/testcase/od/\345\244\232\346\230\216\347\273\206/\345\257\204\345\224\256\345\200\237\345\207\272\345\215\225\345\244\232\346\230\216\347\273\206100.py" new file mode 100644 index 0000000000000000000000000000000000000000..fdb3f88dbe0940dbc59231f69caa15387e632959 --- /dev/null +++ "b/testcase/od/\345\244\232\346\230\216\347\273\206/\345\257\204\345\224\256\345\200\237\345\207\272\345\215\225\345\244\232\346\230\216\347\273\206100.py" @@ -0,0 +1,403 @@ +#!/usr/bin/env python +# coding=utf-8 +import datetime +import threading +import time +import traceback + +from airtest.core.api import * +from selenium import webdriver +from selenium.webdriver import DesiredCapabilities +from selenium.webdriver.common.keys import Keys +from airtest_selenium.proxy import * +from selenium.webdriver import Chrome, ChromeOptions +from airtest.core.api import * +from airtest_selenium.proxy import * + +from mail1 import send_email1 +from public.tools import * + + + + +# chrome = webdriver.Chrome(chrome_options=opt) + +def job(): + print("这是一个需要执行的任务。。。。。") + create_salesorder() + print("当前线程的个数:", threading.active_count()) + time.sleep(1) + print("当前线程的信息:", threading.current_thread()) +def add_goods(goodsname,chrome): + chrome.find_element_by_xpath( + '//input[@placeholder="模糊检索:商品编码,商品名称,规格型号,厂家物料编码,件包数"]').send_keys( + goodsname) + chrome.find_element_by_xpath( + '//input[@placeholder="模糊检索:商品编码,商品名称,规格型号,厂家物料编码,件包数"]').send_keys( + Keys.ENTER) + #获取页数 + # pagecount=chrome.find_element_by_xpath('(// li[ @class ="number"])[16]').text + pagecount=10 + for i in range(int(pagecount)): + sleep(1) + chrome.find_element_by_xpath( + '//th[@class="el-table_18_column_157 multiple-column el-table-column--selection is-leaf headerCellClassName el-table__cell"]/div/label/span/span').click() + #翻页 + chrome.find_element_by_xpath('(//button[@class="btn-next is-last"])[6]').click() + sleep(2) + + +def create_salesorder(type=1): + try: + import time + pro_path = get_pro_path() + start = time.clock() + # caps = DesiredCapabilities().CHROME + # caps["pageLoadStrategy"] = "normal" # complete + # caps["pageLoadStrategy"] = "eager" # interactive + # caps["pageLoadStrategy"] = "none" + # chrome = webdriver.Chrome(desired_capabilities=caps) + opt = ChromeOptions() # 创建 Chrome 参数对象 + opt.headless = True # 把 Chrome 设置成无界面模式,windows/Linux 皆可 + # opt.headless = False # 把 Chrome 设置成无界面模式,windows/Linux 皆可 + opt.add_argument('--start-maximized') + opt.add_argument('--window-size=1280x1024') + # chrome = Chrome(options=opt) # 创建无界面对象 + # chrome = WebChrome(chrome_options=opt) + chrome = WebChrome(chrome_options=opt) + # chrome=webdriver.Chrome() + chrome.implicitly_wait(20) + chrome.get("http://10.17.65.200:8088/portal/") + # chrome.get("http://10.17.65.207:8088/uat/r/w") + sleep(2) + chrome.implicitly_wait(30) + chrome.maximize_window() + chrome.find_element_by_id('input1').clear() + chrome.find_element_by_id('input1').send_keys('admin') + chrome.find_element_by_id('input2').clear() + chrome.find_element_by_id('input2').send_keys('Gyxc1234') + chrome.find_element_by_id('input2').send_keys(Keys.ENTER) + while True: + try: + if(chrome.find_element_by_xpath('//span[text()="退出"]').is_displayed()==True): + break + except: + continue + # 切换所属公司 + chrome.find_element_by_class_name('changeCom').click() + sleep(1) + chrome.find_element_by_xpath('//span[text()="国药集团北京医疗器械有限公司"]/following-sibling::button').click() + sleep(1) + chrome.find_element_by_xpath('// button[text() = "确定"]').click() + sleep(1) + # chrome.find_element_by_xpath('//div[text()="销售管理"]').click() + # actions = ActionChains(chrome) + # actions.move_to_element(chrome.find_element_by_xpath('//div[text()="销售业务"]')).perform() + # chrome.find_element_by_xpath('//span[text()="销售订单"]').click() + order_link = chrome.find_element_by_xpath('//span[text()="寄售借出单"]') + chrome.execute_script("arguments[0].click();", order_link) + chrome.switch_to.frame(chrome.find_element_by_xpath('(//iframe[@class="metro-main-frame"])[2]')) + sleep(4) + chrome.find_element_by_xpath('//span[text()="新建"]').click() + sleep(4) + chrome.switch_to.frame(chrome.find_element_by_xpath('//iframe[contains(@name,"awsui-dialog-iframe")]')) + #获取订单号 + + orderno=chrome.find_element_by_xpath('//div[text() = "订单号 "]/following-sibling::div/span').text + print(orderno) + # chrome.switch_to.default_content() + sleep(4) + # while True: + # try: + # if chrome.find_element_by_xpath('//div[text()="订单公司名称 "]').is_displayed(): + # print(chrome.find_element_by_xpath('//div[text()="订单公司名称 "]').text) + # break + # except: + # continue + # print(chrome.find_element_by_xpath('//div[text()="订单公司名称 "]').text) + + + # sleep(2) + # chrome.find_element_by_xpath( + # '//div[text()="公司名称 "]/following-sibling::div/div/div/div/div/div/div/div/span/span/i').click() + # chrome.find_element_by_xpath('//input[@placeholder="模糊检索:公司名称,公司编码"]').send_keys('国药集团北京') + # chrome.find_element_by_xpath('//input[@placeholder="模糊检索:公司名称,公司编码"]').send_keys(Keys.ENTER) + # chrome.find_element_by_xpath('(//span[@class="el-radio__inner"])[2]').click() + # chrome.find_element_by_xpath('//span[@class="ensureBtn"]/button').click() + # chrome.find_element_by_xpath('//button[@class="el-button el-button--primary el-button--mini"]').click() + + # 业务员名称 + chrome.find_element_by_xpath( + '//div[text()="业务员名称 "]/following-sibling::div/div/div/div/div/div/div/div/span/span/i').click() + chrome.find_element_by_xpath('//input[@placeholder="模糊检索:员工编码,员工名称"]').send_keys('杨春刚') + chrome.find_element_by_xpath('//input[@placeholder="模糊检索:员工编码,员工名称"]').send_keys( + Keys.ENTER) + chrome.find_element_by_xpath( + '(//div[text()="杨春刚"])[3]/ancestor-or-self::td/preceding-sibling::td/div/label/span/span').click() + chrome.find_element_by_xpath('(//span[@class="ensureBtn"]/button[1])[1]').click() + + #客户信息页签 + chrome.find_element_by_xpath('//div[text()="客户信息"]').click() + chrome.find_element_by_xpath('//div[text()="客户名称 "]/following-sibling::div/div/div/div/div/div/div/div/span/span/i').click() + chrome.find_element_by_xpath('//input[@placeholder="模糊检索:客户编码,客户名称,收货地址号,收货地址信息,地址名称"]').send_keys('1451') + chrome.find_element_by_xpath('//input[@placeholder="模糊检索:客户编码,客户名称,收货地址号,收货地址信息,地址名称"]').send_keys(Keys.ENTER) + # chrome.find_element_by_xpath('//span/input[@type="radio" and @value="03105272b49986351ef7eb2930b5454de"]').click() + btn_div= chrome.find_element_by_xpath('//span/input[@type="radio" and @value="0b570c63f68dfcc5a40d6a06f6aef07e4"]') + chrome.execute_script("arguments[0].click();", btn_div) + chrome.find_element_by_xpath('(//button[@class="el-button el-button--primary el-button--default"])[3]').click() + #仓库信息页签 + chrome.find_element_by_xpath('//div[text()="仓库信息"]').click() + chrome.find_element_by_xpath( + '//div[text()="借出仓库名称 "]/following-sibling::div/div/div/div/div/div/div/div/span/span/i').click() + chrome.find_element_by_xpath('//input[@placeholder="模糊检索:仓库编码,仓库名称"]').send_keys('103356') + chrome.find_element_by_xpath('//input[@placeholder="模糊检索:仓库编码,仓库名称"]').send_keys(Keys.ENTER) + chrome.find_element_by_xpath('//div[@class="multiple-header string_col" and text()="103356"]/ancestor-or-self::td/preceding-sibling::td/div/label/span/span').click() + chrome.find_element_by_xpath('(//button[@class="el-button el-button--primary el-button--default"])[4]').click() + #借入仓库 + chrome.find_element_by_xpath( + '//div[text()="借入仓库名称 "]/following-sibling::div/div/div/div/div/div/div/div/span/span/i').click() + chrome.find_element_by_xpath('(//input[@placeholder="模糊检索:仓库编码,仓库名称"])[2]').send_keys('103503') + chrome.find_element_by_xpath('(//input[@placeholder="模糊检索:仓库编码,仓库名称"])[2]').send_keys(Keys.ENTER) + chrome.find_element_by_xpath( + '//div[@class="multiple-header string_col" and text()="103503"]/ancestor-or-self::td/preceding-sibling::td/div/label/span/span').click() + chrome.find_element_by_xpath('(//button[@class="el-button el-button--primary el-button--default"])[5]').click() + # #业务员名称 + # chrome.find_element_by_xpath( + # '//div[text()="业务员名称 "]/following-sibling::div/div/div/div/div/div/div/div/span/span/i').click() + # chrome.find_element_by_xpath('//input[@placeholder="模糊检索:业务员名称,业务员编码,业务部门名称,业务部门编码,部门类型编码"]').send_keys('杨春刚') + # chrome.find_element_by_xpath('//input[@placeholder="模糊检索:业务员名称,业务员编码,业务部门名称,业务部门编码,部门类型编码"]').send_keys(Keys.ENTER) + # chrome.find_element_by_xpath('(//div[text()="杨春刚"])[3]/ancestor-or-self::td/preceding-sibling::td/div/label/span/span').click() + # chrome.find_element_by_xpath('(//span[@class="ensureBtn"]/button[1])[4]').click() + # #其他信息页签 + # chrome.find_element_by_xpath('//div[text()="其他信息"]').click() + # chrome.find_element_by_xpath('//div[@cid="AWSUI.SwitchButton"]//div/div/div/div/span[1]').click() + # 子表信息录入 + chrome.find_element_by_xpath('//div[text()="主体信息"]').click() + # chrome.find_element_by_xpath('//span[text()="添加商品"]').click() + # 点击添加商品弹出添加商品子窗口 + for i in range(1): + chrome.find_element_by_xpath('//span[text()="添加商品"]').click() + add_goods('PTCA', chrome) + chrome.find_element_by_xpath('(//div[@class="el-dialog__body"]/div[2]/span/button[1]/span)[5]').click() + sleep(10) + while True: + try: + chrome.find_element_by_xpath('//div[@class="el-loading-spinner"]').is_displayed() + continue + except: + break + # 滚动条右拉 + chrome.execute_script( + "document.getElementsByClassName('vxe-table--footer-wrapper body--wrapper')[0].scrollLeft = 1200"); + # element = chrome.find_element_by_xpath('//td[@colid="col_159"]') + # element.click() + # sleep(3) + # element.send_keys("1") + # chrome.execute_script("document.getElementsByClassName('awsui-input-number-right')[0].value='1'") + # chrome.find_element_by_xpath( + # '//div[@class="el-input el-input--fullScreenSize el-input--prefix el-input--suffix dataDialog awsui-input dataDialog"]/div/input').send_keys( + # '23072800OP0237') + # sleep(1) + # chrome.find_element_by_xpath('//td[@colid="col_160"]').click() + sleep(1) + # for i in range(1,101): + # element = chrome.find_element_by_xpath('(//td[@colid="col_159"])[%s]'%i) + # element.click() + # sleep(2) + # chrome.find_element_by_xpath( + # '(//div[@class="el-input el-input--fullScreenSize el-input--prefix el-input--suffix dataDialog awsui-input dataDialog"]/div/span/span)[2]').click() + # # chrome.find_element_by_xpath('//div[@class="el-input el-input--fullScreenSize el-input--prefix el-input--suffix dataDialog awsui-input dataDialog"]/div/input').send_keys('23072800OP0237') + # chrome.find_element_by_xpath('(//div[text()="合格品"])[3]').click() + # sleep(1) + # chrome.find_element_by_xpath( + # '(//button[@class="el-button el-button--primary el-button--default"])[8]').click() + # sleep(1) + # chrome.find_element_by_xpath('//td[@colid="col_160"]').click() + # sleep(1) + + for i in range(1, 101): + element = chrome.find_element_by_xpath('(//td[@colid="col_165"])[%s]' % i) + # if i==88: + # print('这里出问题了') + # chrome.execute_script( + # "document.getElementsByClassName('vxe-table--body-wrapper body--wrapper')[0].scrollTop = %s*10;" % i) + # try: + element.click() + # except: + # element=chrome.find_element_by_class_name('vxe-table--footer-wrapper body--wrapper') + # chrome.execute_script("arguments[0].click();", element) + sleep(2) + # element.send_keys("1") + # chrome.execute_script("document.getElementsByClassName('awsui-input-number-right')[0].value='1'") + chrome.find_element_by_class_name('awsui-input-number-right').send_keys('1') + sleep(2) + chrome.find_element_by_xpath('(//td[@colid="col_166"])[%s]' % i) + chrome.execute_script( + "document.getElementsByClassName('vxe-table--body-wrapper body--wrapper')[0].scrollTop = %s*50;" % i) + if i==100: + chrome.find_element_by_xpath('(//td[@class="vxe-body--column col_166 col--left col--ellipsis"])[100]').click() + sleep(2) + # chrome.execute_script( + # "document.getElementsByClassName('vxe-table--body-wrapper body--wrapper')[0].scrollTop = 0;") + # chrome.execute_script("document.getElementsByClassName('vxe-table--footer-wrapper body--wrapper')[0].scrollLeft = 0"); + + chrome.execute_script("document.getElementsByClassName('body')[0].scrollTop=100") + # 点击自动配货按钮 + chrome.find_element_by_xpath('//button[text()="自动配货"]').click() + sleep(2) + chrome.find_element_by_xpath('//span[text()="分配批次"]').click() + sleep(30) + # chrome.find_element_by_xpath( + # '//input[@placeholder="模糊检索:商品编码,商品名称,规格型号,厂家物料编码,件包数"]').send_keys( + # '10006179') + # chrome.find_element_by_xpath( + # '//input[@placeholder="模糊检索:商品编码,商品名称,规格型号,厂家物料编码,件包数"]').send_keys( + # Keys.ENTER) + # chrome.find_element_by_xpath('(//span[@class="el-checkbox__inner"])[4]').click() + # chrome.find_element_by_xpath('(//div[@class="el-dialog__body"]/div[2]/span/button[1]/span)[5]').click() + # sleep(3) + # 滚动条右拉 + # chrome.execute_script("document.getElementsByClassName('vxe-table--footer-wrapper body--wrapper')[0].scrollLeft = 1000"); + # element = chrome.find_element_by_xpath('//td[@colid="col_159"]') + # element.click() + # sleep(3) + # element.send_keys("1") + # chrome.execute_script("document.getElementsByClassName('awsui-input-number-right')[0].value='1'") + # chrome.find_element_by_xpath('//div[@class="el-input el-input--fullScreenSize el-input--prefix el-input--suffix dataDialog awsui-input dataDialog"]/div/input').send_keys('23072800OP0237') + # sleep(1) + # chrome.find_element_by_xpath('//td[@colid="col_160"]').click() + # sleep(1) + # chrome.execute_script("document.getElementsByClassName('vxe-table--footer-wrapper body--wrapper')[0].scrollLeft = 1500"); + # sleep(1) + # element=chrome.find_element_by_xpath('//td[@colid="col_165"]') + # element.click() + # sleep(3) + # element.send_keys("1") + # chrome.execute_script("document.getElementsByClassName('awsui-input-number-right')[0].value='1'") + # chrome.find_element_by_class_name('awsui-input-number-right').send_keys('1') + # sleep(1) + # chrome.find_element_by_xpath('//td[@colid="col_166"]').click() + # sleep(1) + #滚动条右拉 + # document.getElementsByClassName('vxe-table--footer-wrapper body--wrapper')[0].scrollLeft = 5000 + # chrome.execute_script("document.getElementsByClassName('vxe-table--footer-wrapper body--wrapper')[0].scrollLeft = 2000"); + # element = chrome.find_element_by_xpath('//td[@colid="col_197"]') + # element.click() + # sleep(6) + # chrome.execute_script("document.getElementsByClassName('awsui-input-number-right')[0].value='8'") + # sleep(2) + # element = chrome.find_element_by_xpath('//td[@colid="col_198"]') + # element.click() + # sleep(6) + # chrome.execute_script("document.getElementsByClassName('awsui-input-number-right')[0].value='8'") + # sleep(2) + # lock = threading.Lock() + # lock.acquire() + #方案一============================开始 + if type==1: + import datetime + now = datetime.datetime.now() + one_minutes_later = now + datetime.timedelta(minutes=1) + now = now.strftime('%Y-%m-%d %H:%M') + one_minutes_later = one_minutes_later.strftime('%Y-%m-%d %H:%M') + # print('bbbbbbbb'+one_minutes_later) + while True: + now = datetime.datetime.now().strftime('%Y-%m-%d %H:%M') + # print('变化的时间' + now) + if now == one_minutes_later: + print('时间到了') + start = time.clock() + chrome.find_element_by_xpath('//span[text()="提交"]').click() + sleep(2) + chrome.find_element_by_xpath('//button[@class="el-button el-button--primary el-button--mini"]').click() + break + # 方案一============================结束 + #方案二===============开始 + if type==2: + m=get_time_m() #当前时间的分钟 + m1=get_submit_time(m)#计划提交时间的分钟 + while True: + m2=get_time_m() #循环获取当前的分 + sleep(10) + if (m2==m1): + start = time.clock() + chrome.find_element_by_xpath('//span[text()="提交"]').click() + sleep(2) + chrome.find_element_by_xpath('//button[@class="el-button el-button--primary el-button--mini"]').click() + break + #方案二===============结束 + # lock.release() + while True: + try: + if chrome.find_element_by_xpath('//p[text()="共享任务创建成功"]').is_displayed() == True: + # print('订单完成了') + break + except: + continue + sleep(2) + # chrome.find_element_by_xpath('//button[@class="el-button el-button--primary el-button--mini"]').click() + chrome.switch_to.default_content() + chrome.switch_to.frame(chrome.find_element_by_xpath('(//iframe[@class="metro-main-frame"])[2]')) + # sleep(20) + while True: + try: + if chrome.find_element_by_xpath('//span[text()="%s"]'%orderno).is_displayed()==True: + print('//span[text()="%s"]'%orderno) + break + except: + continue + print('寄售借出单创建完成') + end = time.clock() + print(start, end) + print('CPU执行时间: ', end - start) + imgInfo = getErrorPhoto(chrome) + imgName = imgInfo[0] + image_path = imgInfo[1] + info=orderno+'执行耗时'+str(end - start) + now = get_time() + writeFile_append(pro_path + '/logs/catalina.out', info) + send_email1(image_path, info) + except Exception as e: + print('出现异常') + # 将日志写入到文件中单独存储 + pro_path = get_pro_path() + traceback.print_exc() + imgInfo = getErrorPhoto(chrome) + imgName = imgInfo[0] + image_path = imgInfo[1] + print(imgName, image_path) + print(repr(e)) + info = repr(e) + now = get_time() + writeFile_append(pro_path + '/logs/logerror%s.txt' % now, info) + # send_email1(image_path, info) +if __name__ == "__main__": + # 创建多线程时, 需要制定该线程执行的任务.name线程名字 target目标函数名 + # t1 = threading.Thread(target=job,name="job1") + # t2 = threading.Thread(target=job,name="job2") + # t1.start() + # t2.start() + # opt = ChromeOptions() # 创建 Chrome 参数对象 + # # opt.headless = True # 把 Chrome 设置成无界面模式,windows/Linux 皆可 + # opt.headless = False # 把 Chrome 设置成无界面模式,windows/Linux 皆可 + # opt.add_argument('--start-maximized') + # opt.add_argument('--window-size=1280x1024') + # # chrome = Chrome(options=opt) # 创建无界面对象 + # chrome = WebChrome(chrome_options=opt) # airtest中的类 + + count=1 + for i in range(count): + t = threading.Thread(target=job) + t.start() + # t.join() + +def start1(): + count = 5 + for i in range(count): + t = threading.Thread(target=job) + t.start() + t.join() + + # print(threading.active_count()) + # print("程序执行结束.....") + # create_salesorder() diff --git "a/testcase/od/\345\244\232\346\230\216\347\273\206/\345\257\204\345\224\256\347\224\263\350\257\267_\351\205\215\350\264\247_\345\244\232\346\230\216\347\273\206100.py" "b/testcase/od/\345\244\232\346\230\216\347\273\206/\345\257\204\345\224\256\347\224\263\350\257\267_\351\205\215\350\264\247_\345\244\232\346\230\216\347\273\206100.py" new file mode 100644 index 0000000000000000000000000000000000000000..528feea2958d66645b938a78c8a6685c502617e2 --- /dev/null +++ "b/testcase/od/\345\244\232\346\230\216\347\273\206/\345\257\204\345\224\256\347\224\263\350\257\267_\351\205\215\350\264\247_\345\244\232\346\230\216\347\273\206100.py" @@ -0,0 +1,395 @@ +import datetime +import threading +import time +import traceback + +from airtest.core.api import * +from selenium import webdriver +from selenium.webdriver import DesiredCapabilities +from selenium.webdriver.common.keys import Keys +from airtest_selenium.proxy import * +from selenium.webdriver import Chrome, ChromeOptions +from airtest.core.api import * +from airtest_selenium.proxy import * +from selenium.webdriver.support.wait import WebDriverWait + +from mail1 import send_email1 +from public.tools import * + + + + +# chrome = webdriver.Chrome(chrome_options=opt) + +def job(): + print("这是一个需要执行的任务。。。。。") + create_salesorder() + print("当前线程的个数:", threading.active_count()) + time.sleep(1) + print("当前线程的信息:", threading.current_thread()) +def add_goods(goodsname,chrome): + chrome.find_element_by_xpath( + '//input[@placeholder="模糊检索:商品编码,商品名称,规格型号"]').send_keys( + goodsname) + sleep(2) + chrome.find_element_by_xpath( + '//input[@placeholder="模糊检索:商品编码,商品名称,规格型号"]').send_keys( + Keys.ENTER) + sleep(2) + #获取页数 + # pagecount=chrome.find_element_by_xpath('(// li[ @class ="number"])[16]').text + pagecount=10 + for i in range(int(pagecount)): + # chrome.find_element_by_xpath('//span[text()="添加商品"]').click() + # chrome.find_element_by_xpath( + # '//input[@placeholder="模糊检索:商品编码,商品名称,规格型号,主计量单位,销售计量单位,厂家物料编码,存储条件说明,生产企业编码,供应商编码,行类型,商品性质,批发价,进口/国产/港澳台,件包数,产品备注,是否免备案,产品描述"]').send_keys( + # goodsname) + # chrome.find_element_by_xpath( + # '//input[@placeholder="模糊检索:商品编码,商品名称,规格型号,主计量单位,销售计量单位,厂家物料编码,存储条件说明,生产企业编码,供应商编码,行类型,商品性质,批发价,进口/国产/港澳台,件包数,产品备注,是否免备案,产品描述"]').send_keys( + # Keys.ENTER) + sleep(1) + chrome.find_element_by_xpath( + '//th[@class="el-table_12_column_139 multiple-column el-table-column--selection is-leaf headerCellClassName el-table__cell"]/div/label/span/span').click() + sleep(2) + #翻页 + chrome.find_element_by_xpath('(//button[@class="btn-next is-last"])[4]').click() + + #点击确定 + # chrome.find_element_by_xpath('(//div[@class="el-dialog__body"]/div[2]/span/button[1]/span)[5]').click() + sleep(1) + +def create_salesorder(type=1): + try: + import time + pro_path = get_pro_path() + start = time.clock() + # caps = DesiredCapabilities().CHROME + # caps["pageLoadStrategy"] = "normal" # complete + # caps["pageLoadStrategy"] = "eager" # interactive + # caps["pageLoadStrategy"] = "none" + # chrome = webdriver.Chrome(desired_capabilities=caps) + opt = ChromeOptions() # 创建 Chrome 参数对象 + # opt.headless = True # 把 Chrome 设置成无界面模式,windows/Linux 皆可 + opt.headless = False # 把 Chrome 设置成无界面模式,windows/Linux 皆可 + opt.add_argument('--start-maximized') + opt.add_argument('--window-size=1280x1024') + # chrome = Chrome(options=opt) # 创建无界面对象 + # chrome = WebChrome(chrome_options=opt) + chrome = WebChrome(chrome_options=opt) + # chrome=webdriver.Chrome() + # chrome.implicitly_wait(20) + chrome.get("http://10.17.65.200:8088/portal/") + # chrome.get("http://10.17.65.207:8088/uat/r/w") + sleep(2) + chrome.implicitly_wait(30) + chrome.maximize_window() + chrome.find_element_by_id('input1').clear() + chrome.find_element_by_id('input1').send_keys('admin') + chrome.find_element_by_id('input2').clear() + chrome.find_element_by_id('input2').send_keys('Gyxc1234') + chrome.find_element_by_id('input2').send_keys(Keys.ENTER) + while True: + try: + if(chrome.find_element_by_xpath('//span[text()="退出"]').is_displayed()==True): + break + except: + continue + # 切换所属公司 + chrome.find_element_by_class_name('changeCom').click() + sleep(1) + chrome.find_element_by_xpath('//span[text()="国药集团北京医疗器械有限公司"]/following-sibling::button').click() + sleep(1) + chrome.find_element_by_xpath('// button[text() = "确定"]').click() + sleep(1) + # chrome.find_element_by_xpath('//div[text()="销售管理"]').click() + # actions = ActionChains(chrome) + # actions.move_to_element(chrome.find_element_by_xpath('//div[text()="销售业务"]')).perform() + # chrome.find_element_by_xpath('//span[text()="销售订单"]').click() + order_link = chrome.find_element_by_xpath('//span[text()="寄售申请单"]') + chrome.execute_script("arguments[0].click();", order_link) + chrome.switch_to.frame(chrome.find_element_by_xpath('(//iframe[@class="metro-main-frame"])[2]')) + sleep(2) + chrome.find_element_by_xpath('//span[text()="新建"]').click() + sleep(2) + chrome.switch_to.frame(chrome.find_element_by_xpath('//iframe[contains(@name,"awsui-dialog-iframe")]')) + #获取订单号 + + orderno=chrome.find_element_by_xpath('//div[text() = "寄售申请单号 "]/following-sibling::div/span').text + print(orderno) + # chrome.switch_to.default_content() + sleep(2) + # while True: + # try: + # if chrome.find_element_by_xpath('//div[text()="订单公司名称 "]').is_displayed(): + # print(chrome.find_element_by_xpath('//div[text()="订单公司名称 "]').text) + # break + # except: + # continue + # print(chrome.find_element_by_xpath('//div[text()="订单公司名称 "]').text) + + + # sleep(2) + # chrome.find_element_by_xpath( + # '//div[text()="公司名称 "]/following-sibling::div/div/div/div/div/div/div/div/span/span/i').click() + # chrome.find_element_by_xpath('//input[@placeholder="模糊检索:公司名称,公司编码"]').send_keys('国药集团北京') + # chrome.find_element_by_xpath('//input[@placeholder="模糊检索:公司名称,公司编码"]').send_keys(Keys.ENTER) + # chrome.find_element_by_xpath('(//span[@class="el-radio__inner"])[2]').click() + # chrome.find_element_by_xpath('//span[@class="ensureBtn"]/button').click() + # chrome.find_element_by_xpath('//button[@class="el-button el-button--primary el-button--mini"]').click() + + # 业务员名称 + chrome.find_element_by_xpath( + '//div[text()="业务员名称 "]/following-sibling::div/div/div/div/div/div/div/div/span/span/i').click() + chrome.find_element_by_xpath('//input[@placeholder="模糊检索:员工编码,员工名称"]').send_keys('杨春刚') + chrome.find_element_by_xpath('//input[@placeholder="模糊检索:员工编码,员工名称"]').send_keys( + Keys.ENTER) + chrome.find_element_by_xpath( + '(//div[text()="杨春刚"])[3]/ancestor-or-self::td/preceding-sibling::td/div/label/span/span').click() + chrome.find_element_by_xpath('(//span[@class="ensureBtn"]/button[1])[1]').click() + + #客户信息页签 + chrome.find_element_by_xpath('//div[text()="客户信息"]').click() + chrome.find_element_by_xpath('//div[text()="客户名称 "]/following-sibling::div/div/div/div/div/div/div/div/span/span/i').click() + chrome.find_element_by_xpath('//input[@placeholder="模糊检索:客户编码,客户名称,收货地址号,收货地址信息,地址名称"]').send_keys('1451') + chrome.find_element_by_xpath('//input[@placeholder="模糊检索:客户编码,客户名称,收货地址号,收货地址信息,地址名称"]').send_keys(Keys.ENTER) + # chrome.find_element_by_xpath('//span/input[@type="radio" and @value="03105272b49986351ef7eb2930b5454de"]').click() + btn_div= chrome.find_element_by_xpath('//span/input[@type="radio" and @value="0b570c63f68dfcc5a40d6a06f6aef07e4"]') + chrome.execute_script("arguments[0].click();", btn_div) + chrome.find_element_by_xpath('(//button[@class="el-button el-button--primary el-button--default"])[3]').click() + sleep(2) + # #仓库信息页签 + # chrome.find_element_by_xpath('//div[text()="仓库信息"]').click() + # chrome.find_element_by_xpath( + # '//div[text()="借出仓库名称 "]/following-sibling::div/div/div/div/div/div/div/div/span/span/i').click() + # chrome.find_element_by_xpath('//input[@placeholder="模糊检索:仓库编码,仓库名称"]').send_keys('103356') + # chrome.find_element_by_xpath('//input[@placeholder="模糊检索:仓库编码,仓库名称"]').send_keys(Keys.ENTER) + # chrome.find_element_by_xpath('//div[@class="multiple-header string_col" and text()="103356"]/ancestor-or-self::td/preceding-sibling::td/div/label/span/span').click() + # chrome.find_element_by_xpath('(//button[@class="el-button el-button--primary el-button--default"])[4]').click() + # #借入仓库 + # chrome.find_element_by_xpath( + # '//div[text()="借入仓库名称 "]/following-sibling::div/div/div/div/div/div/div/div/span/span/i').click() + # chrome.find_element_by_xpath('(//input[@placeholder="模糊检索:仓库编码,仓库名称"])[2]').send_keys('103503') + # chrome.find_element_by_xpath('(//input[@placeholder="模糊检索:仓库编码,仓库名称"])[2]').send_keys(Keys.ENTER) + # chrome.find_element_by_xpath( + # '//div[@class="multiple-header string_col" and text()="103503"]/ancestor-or-self::td/preceding-sibling::td/div/label/span/span').click() + # chrome.find_element_by_xpath('(//button[@class="el-button el-button--primary el-button--default"])[5]').click() + # # #业务员名称 + # chrome.find_element_by_xpath( + # '//div[text()="业务员名称 "]/following-sibling::div/div/div/div/div/div/div/div/span/span/i').click() + # chrome.find_element_by_xpath('//input[@placeholder="模糊检索:业务员名称,业务员编码,业务部门名称,业务部门编码,部门类型编码"]').send_keys('杨春刚') + # chrome.find_element_by_xpath('//input[@placeholder="模糊检索:业务员名称,业务员编码,业务部门名称,业务部门编码,部门类型编码"]').send_keys(Keys.ENTER) + # chrome.find_element_by_xpath('(//div[text()="杨春刚"])[3]/ancestor-or-self::td/preceding-sibling::td/div/label/span/span').click() + # chrome.find_element_by_xpath('(//span[@class="ensureBtn"]/button[1])[4]').click() + # #其他信息页签 + # chrome.find_element_by_xpath('//div[text()="其他信息"]').click() + # chrome.find_element_by_xpath('//div[@cid="AWSUI.SwitchButton"]//div/div/div/div/span[1]').click() + # 子表信息录入 + chrome.find_element_by_xpath('//div[text()="主体信息"]').click() + for i in range(1): + chrome.find_element_by_xpath('//span[text()="添加商品"]').click() + add_goods('PTCA', chrome) + chrome.find_element_by_xpath( + '(//button[@class="el-button el-button--primary el-button--default"])[4]').click() + sleep(2) + while True: + try: + chrome.find_element_by_xpath('//div[@class="el-loading-spinner"]').is_displayed() + continue + except: + break + # chrome.find_element_by_xpath( + # '//input[@placeholder="模糊检索:商品编码,商品名称,规格型号"]').send_keys( + # '10006179') + # chrome.find_element_by_xpath( + # '//input[@placeholder="模糊检索:商品编码,商品名称,规格型号"]').send_keys( + # Keys.ENTER) + # chrome.find_element_by_xpath('(//span[@class="el-checkbox__inner"])[4]').click() + # chrome.find_element_by_xpath('(//div[@class="el-dialog__body"]/div[2]/span/button[1]/span)[3]').click() + # 滚动条右拉 + chrome.execute_script("document.getElementsByClassName('vxe-table--footer-wrapper body--wrapper')[0].scrollLeft = 800"); + sleep(3) + for i in range(1, 101): + element = chrome.find_element_by_xpath('(//td[@colid="col_113"])[%s]' % i) + sleep(2) + chrome.execute_script("arguments[0].click();", element) + + # element=chrome.find_element_by_xpath('(//td[@colid="col_177"])[%s]'%i) + # element.click() + sleep(2) + # element.send_keys("1") + # chrome.execute_script("document.getElementsByClassName('awsui-input-number-right')[0].value='1'") + chrome.find_element_by_class_name('awsui-input-number-right').send_keys('1') + # chrome.find_element_by_xpath('//td[@colid="col_177"]/div/div').send_keys('1') + sleep(2) + # chrome.find_element_by_xpath('(//td[@colid="col_178"])[%s]'%i).click() + element = chrome.find_element_by_xpath('(//td[@colid="col_114"])[%s]' % i) + chrome.execute_script("arguments[0].click();", element) + sleep(2) + + sleep(3) + + chrome.find_element_by_xpath('//span[text()="提交"]').click() + sleep(3) + chrome.find_element_by_xpath('//button[@class="el-button el-button--primary el-button--mini"]').click() + sleep(2) + ele=chrome.find_element_by_xpath('//p[text()="流程结束"]') + wait=WebDriverWait(chrome, 3600) + wait.until(lambda x:ele.is_displayed()) + # while True: + # try: + # if chrome.find_element_by_xpath('//p[text()="流程结束"]').is_displayed() == True: + # # print('流程结束') + # break + # # else: + # # print('共享任务创建成功的元素没有出现') + # except: + # continue + chrome.switch_to.default_content() + sleep(6) + chrome.find_element_by_xpath('//span[@class="awsui-tabs-icon close"]').click() + sleep(2) + order_link = chrome.find_element_by_xpath('//span[text()="寄售配货单"]') + sleep(2) + chrome.execute_script("arguments[0].click();", order_link) + sleep(2) + chrome.switch_to.frame(chrome.find_element_by_xpath('(//iframe[@class="metro-main-frame"])[2]')) + sleep(2) + # 输入配货单号 + chrome.find_element_by_xpath('(//input[@class="el-input__inner"])[2]').send_keys(orderno) + sleep(2) + chrome.find_element_by_xpath('(//input[@class="el-input__inner"])[2]').send_keys(Keys.ENTER) + sleep(2) + chrome.find_element_by_xpath('//td[@class="vxe-body--column col_19 col--center col--last col--ellipsis dw-click-cell"]/div/span').click() + sleep(2) + chrome.switch_to.frame(chrome.find_element_by_xpath('//iframe[contains(@name,"awsui-dialog-iframe")]')) + sleep(2) + # 点击自动配货按钮 + chrome.find_element_by_xpath('//button[text()="自动配货"]').click() + sleep(2) + chrome.find_element_by_xpath('//span[text()="分配批次"]').click() + sleep(2) + # chrome.execute_script( + # 'document.getElementsByClassName("body")[0].scrollTop = "300";') + # # 滚动条右拉 + # chrome.execute_script( + # "document.getElementsByClassName('vxe-table--footer-wrapper body--wrapper')[0].scrollLeft = 1200") + # + # element = chrome.find_element_by_xpath('(//td[@colid="col_124"])[1]') + # element.click() + # sleep(2) + # chrome.find_element_by_class_name('awsui-input-number-right').send_keys('1') + # sleep(2) + # chrome.find_element_by_xpath('//td[@colid="col_125"]').click() + # sleep(1) + + #方案一============================开始 + if type==1: + import datetime + now = datetime.datetime.now() + one_minutes_later = now + datetime.timedelta(minutes=1) + now = now.strftime('%Y-%m-%d %H:%M') + one_minutes_later = one_minutes_later.strftime('%Y-%m-%d %H:%M') + # print('bbbbbbbb'+one_minutes_later) + while True: + now = datetime.datetime.now().strftime('%Y-%m-%d %H:%M') + # print('变化的时间' + now) + if now == one_minutes_later: + print('时间到了') + start = time.clock() + chrome.find_element_by_xpath('//span[text()="提交"]').click() + sleep(2) + chrome.find_element_by_xpath('//button[@class="el-button el-button--primary el-button--mini"]').click() + break + # 方案一============================结束 + #方案二===============开始 + if type==2: + m=get_time_m() #当前时间的分钟 + m1=get_submit_time(m)#计划提交时间的分钟 + while True: + m2=get_time_m() #循环获取当前的分 + sleep(10) + if (m2==m1): + print('时间到了') + chrome.find_element_by_xpath('//span[text()="提交"]').click() + sleep(2) + start = time.clock() + chrome.find_element_by_xpath('//button[@class="el-button el-button--primary el-button--mini"]').click() + break + #方案二===============结束 + while True: + try: + if chrome.find_element_by_xpath('//p[text()="流程结束"]').is_displayed()==True: + # print('流程结束') + break + # else: + # print('共享任务创建成功的元素没有出现') + except: + continue + # lock.release() + # sleep(2) + # chrome.find_element_by_xpath('//button[@class="el-button el-button--primary el-button--mini"]').click() + chrome.switch_to.default_content() + chrome.switch_to.frame(chrome.find_element_by_xpath('(//iframe[@class="metro-main-frame"])[2]')) + # sleep(20) + while True: + try: + if chrome.find_element_by_xpath('(//span[text()="%s"])[1]'%orderno).is_displayed()==True: + print('//span[text()="%s"]'%orderno) + break + except: + continue + print('寄售申请单创建完成') + end = time.clock() + print(start, end) + print('CPU执行时间: ', end - start) + imgInfo = getErrorPhoto(chrome) + imgName = imgInfo[0] + image_path = imgInfo[1] + info=orderno+'执行耗时'+str(end - start) + now = get_time() + writeFile_append(pro_path + '/logs/catalina.out', info) + send_email1(image_path, info) + except Exception as e: + print('出现异常') + # 将日志写入到文件中单独存储 + pro_path = get_pro_path() + traceback.print_exc() + imgInfo = getErrorPhoto(chrome) + imgName = imgInfo[0] + image_path = imgInfo[1] + print(imgName, image_path) + print(repr(e)) + info = repr(e) + now = get_time() + writeFile_append(pro_path + '/logs/logerror%s.txt' % now, info) + # send_email1(image_path, info) +if __name__ == "__main__": + # 创建多线程时, 需要制定该线程执行的任务.name线程名字 target目标函数名 + # t1 = threading.Thread(target=job,name="job1") + # t2 = threading.Thread(target=job,name="job2") + # t1.start() + # t2.start() + # opt = ChromeOptions() # 创建 Chrome 参数对象 + # # opt.headless = True # 把 Chrome 设置成无界面模式,windows/Linux 皆可 + # opt.headless = False # 把 Chrome 设置成无界面模式,windows/Linux 皆可 + # opt.add_argument('--start-maximized') + # opt.add_argument('--window-size=1280x1024') + # # chrome = Chrome(options=opt) # 创建无界面对象 + # chrome = WebChrome(chrome_options=opt) # airtest中的类 + + count=1 + for i in range(count): + t = threading.Thread(target=job) + t.start() + # t.join() + +def start1(): + count = 5 + for i in range(count): + t = threading.Thread(target=job) + t.start() + t.join() + + # print(threading.active_count()) + # print("程序执行结束.....") + # create_salesorder() diff --git "a/testcase/od/\345\244\232\346\230\216\347\273\206/\345\257\204\345\224\256\351\205\215\350\264\247\345\215\225\345\244\232\346\230\216\347\273\206100_old.py" "b/testcase/od/\345\244\232\346\230\216\347\273\206/\345\257\204\345\224\256\351\205\215\350\264\247\345\215\225\345\244\232\346\230\216\347\273\206100_old.py" new file mode 100644 index 0000000000000000000000000000000000000000..047289729ceaf520fdf8ce2a5e1af13fc9273b5c --- /dev/null +++ "b/testcase/od/\345\244\232\346\230\216\347\273\206/\345\257\204\345\224\256\351\205\215\350\264\247\345\215\225\345\244\232\346\230\216\347\273\206100_old.py" @@ -0,0 +1,304 @@ +import datetime +import threading +import time +import traceback + +from airtest.core.api import * +from selenium import webdriver +from selenium.webdriver import DesiredCapabilities +from selenium.webdriver.common.keys import Keys +from airtest_selenium.proxy import * +from selenium.webdriver import Chrome, ChromeOptions +from airtest.core.api import * +from airtest_selenium.proxy import * + +from mail1 import send_email1 +from public.tools import * + + + + +# chrome = webdriver.Chrome(chrome_options=opt) + +def job(): + print("这是一个需要执行的任务。。。。。") + create_salesorder() + print("当前线程的个数:", threading.active_count()) + time.sleep(1) + print("当前线程的信息:", threading.current_thread()) +def add_goods(goodsname,chrome): + chrome.find_element_by_xpath( + '//input[@placeholder="模糊检索:商品编码,商品名称,规格型号,厂家物料编码,件包数"]').send_keys( + goodsname) + chrome.find_element_by_xpath( + '//input[@placeholder="模糊检索:商品编码,商品名称,规格型号,厂家物料编码,件包数"]').send_keys( + Keys.ENTER) + #获取页数 + # pagecount=chrome.find_element_by_xpath('(// li[ @class ="number"])[16]').text + pagecount=10 + for i in range(int(pagecount)): + sleep(1) + chrome.find_element_by_xpath( + '//th[@class="el-table_18_column_157 multiple-column el-table-column--selection is-leaf headerCellClassName el-table__cell"]/div/label/span/span').click() + #翻页 + chrome.find_element_by_xpath('(//button[@class="btn-next is-last"])[6]').click() + sleep(2) + + +def create_salesorder(type=1): + try: + import time + pro_path = get_pro_path() + start = time.clock() + # caps = DesiredCapabilities().CHROME + # caps["pageLoadStrategy"] = "normal" # complete + # caps["pageLoadStrategy"] = "eager" # interactive + # caps["pageLoadStrategy"] = "none" + # chrome = webdriver.Chrome(desired_capabilities=caps) + opt = ChromeOptions() # 创建 Chrome 参数对象 + # opt.headless = True # 把 Chrome 设置成无界面模式,windows/Linux 皆可 + opt.headless = False # 把 Chrome 设置成无界面模式,windows/Linux 皆可 + opt.add_argument('--start-maximized') + opt.add_argument('--window-size=1280x1024') + # chrome = Chrome(options=opt) # 创建无界面对象 + # chrome = WebChrome(chrome_options=opt) + chrome = WebChrome(chrome_options=opt) + # chrome=webdriver.Chrome() + chrome.implicitly_wait(20) + chrome.get("http://10.17.65.200:8088/portal/") + # chrome.get("http://10.17.65.207:8088/uat/r/w") + sleep(2) + chrome.implicitly_wait(30) + chrome.maximize_window() + chrome.find_element_by_id('input1').clear() + chrome.find_element_by_id('input1').send_keys('admin') + chrome.find_element_by_id('input2').clear() + chrome.find_element_by_id('input2').send_keys('Gyxc1234') + chrome.find_element_by_id('input2').send_keys(Keys.ENTER) + while True: + try: + if(chrome.find_element_by_xpath('//span[text()="退出"]').is_displayed()==True): + break + except: + continue + # 切换所属公司 + chrome.find_element_by_class_name('changeCom').click() + sleep(1) + chrome.find_element_by_xpath('//span[text()="国药集团北京医疗器械有限公司"]/following-sibling::button').click() + sleep(1) + chrome.find_element_by_xpath('// button[text() = "确定"]').click() + sleep(1) + # chrome.find_element_by_xpath('//div[text()="销售管理"]').click() + # actions = ActionChains(chrome) + # actions.move_to_element(chrome.find_element_by_xpath('//div[text()="销售业务"]')).perform() + # chrome.find_element_by_xpath('//span[text()="销售订单"]').click() + order_link = chrome.find_element_by_xpath('//span[text()="寄售配货单"]') + chrome.execute_script("arguments[0].click();", order_link) + chrome.switch_to.frame(chrome.find_element_by_xpath('(//iframe[@class="metro-main-frame"])[2]')) + sleep(2) + #输入配货单号 + chrome.find_element_by_xpath('(//input[@class="el-input__inner"])[2]').send_keys('PHD23082800006A') + sleep(2) + chrome.find_element_by_xpath('(//input[@class="el-input__inner"])[2]').send_keys(Keys.ENTER) + sleep(2) + + # chrome.find_element_by_xpath('//td[@class="vxe-body--column col_19 col--center col--last col--ellipsis dw-click-cell"]/div/span').click() + # chrome.find_element_by_xpath('//span[text()="PHD23082800006A"]').click() + chrome.find_element_by_xpath('//td[@class="vxe-body--column col_19 col--center col--last col--ellipsis dw-click-cell"]/div/span').click() + + # chrome.switch_to.default_content() + sleep(4) + # while True: + # try: + # if chrome.find_element_by_xpath('//div[text()="订单公司名称 "]').is_displayed(): + # print(chrome.find_element_by_xpath('//div[text()="订单公司名称 "]').text) + # break + # except: + # continue + # print(chrome.find_element_by_xpath('//div[text()="订单公司名称 "]').text) + + + # sleep(2) + # chrome.find_element_by_xpath( + # '//div[text()="公司名称 "]/following-sibling::div/div/div/div/div/div/div/div/span/span/i').click() + # chrome.find_element_by_xpath('//input[@placeholder="模糊检索:公司名称,公司编码"]').send_keys('国药集团北京') + # chrome.find_element_by_xpath('//input[@placeholder="模糊检索:公司名称,公司编码"]').send_keys(Keys.ENTER) + # chrome.find_element_by_xpath('(//span[@class="el-radio__inner"])[2]').click() + # chrome.find_element_by_xpath('//span[@class="ensureBtn"]/button').click() + # chrome.find_element_by_xpath('//button[@class="el-button el-button--primary el-button--mini"]').click() + # chrome.switch_to.frame(chrome.find_element_by_xpath('(//iframe[@class="metro-main-frame"])[2]')) + chrome.switch_to.frame(chrome.find_element_by_xpath('//iframe[contains(@name,"awsui-dialog-iframe")]')) + #点击自动配货按钮 + chrome.find_element_by_xpath('//button[text()="自动配货"]').click() + sleep(2) + chrome.find_element_by_xpath('//span[text()="分配批次"]').click() + sleep(2) + chrome.execute_script( + 'document.getElementsByClassName("body")[0].scrollTop = "300";') + # 滚动条右拉 + chrome.execute_script( + "document.getElementsByClassName('vxe-table--footer-wrapper body--wrapper')[0].scrollLeft = 1200"); + + for i in range(1,101): + element = chrome.find_element_by_xpath('(//td[@colid="col_124"])[%s]'%i) + element.click() + sleep(2) + chrome.find_element_by_class_name('awsui-input-number-right').send_keys('1') + sleep(2) + chrome.find_element_by_xpath('//td[@colid="col_125"]').click() + sleep(1) + + + + + # element = chrome.find_element_by_xpath('//td[@colid="col_159"]') + # element.click() + # sleep(3) + # element.send_keys("1") + # chrome.execute_script("document.getElementsByClassName('awsui-input-number-right')[0].value='1'") + # chrome.find_element_by_xpath( + # '//div[@class="el-input el-input--fullScreenSize el-input--prefix el-input--suffix dataDialog awsui-input dataDialog"]/div/input').send_keys( + # '23072800OP0237') + # sleep(1) + # chrome.find_element_by_xpath('//td[@colid="col_160"]').click() + + # chrome.find_element_by_xpath( + # '//input[@placeholder="模糊检索:商品编码,商品名称,规格型号,厂家物料编码,件包数"]').send_keys( + # '10006179') + # chrome.find_element_by_xpath( + # '//input[@placeholder="模糊检索:商品编码,商品名称,规格型号,厂家物料编码,件包数"]').send_keys( + # Keys.ENTER) + # chrome.find_element_by_xpath('(//span[@class="el-checkbox__inner"])[4]').click() + # chrome.find_element_by_xpath('(//div[@class="el-dialog__body"]/div[2]/span/button[1]/span)[5]').click() + # sleep(3) + # 滚动条右拉 + + # element.send_keys("1") + # chrome.execute_script("document.getElementsByClassName('awsui-input-number-right')[0].value='1'") + # chrome.find_element_by_class_name('awsui-input-number-right').send_keys('1') + # sleep(1) + # chrome.find_element_by_xpath('//td[@colid="col_166"]').click() + # sleep(1) + #滚动条右拉 + # document.getElementsByClassName('vxe-table--footer-wrapper body--wrapper')[0].scrollLeft = 5000 + # chrome.execute_script("document.getElementsByClassName('vxe-table--footer-wrapper body--wrapper')[0].scrollLeft = 2000"); + # element = chrome.find_element_by_xpath('//td[@colid="col_197"]') + # element.click() + # sleep(6) + # chrome.execute_script("document.getElementsByClassName('awsui-input-number-right')[0].value='8'") + # sleep(2) + # element = chrome.find_element_by_xpath('//td[@colid="col_198"]') + # element.click() + # sleep(6) + # chrome.execute_script("document.getElementsByClassName('awsui-input-number-right')[0].value='8'") + # sleep(2) + # lock = threading.Lock() + # lock.acquire() + #方案一============================开始 + if type==1: + import datetime + now = datetime.datetime.now() + one_minutes_later = now + datetime.timedelta(minutes=1) + now = now.strftime('%Y-%m-%d %H:%M') + one_minutes_later = one_minutes_later.strftime('%Y-%m-%d %H:%M') + # print('bbbbbbbb'+one_minutes_later) + while True: + now = datetime.datetime.now().strftime('%Y-%m-%d %H:%M') + # print('变化的时间' + now) + if now == one_minutes_later: + print('时间到了') + start = time.clock() + chrome.find_element_by_xpath('//span[text()="提交"]').click() + # sleep(3) + # chrome.find_element_by_xpath('//button[@class="el-button el-button--primary el-button--mini"]').click() + break + # 方案一============================结束 + #方案二===============开始 + if type==2: + m=get_time_m() #当前时间的分钟 + m1=get_submit_time(m)#计划提交时间的分钟 + while True: + m2=get_time_m() #循环获取当前的分 + sleep(10) + if (m2==m1): + start = time.clock() + chrome.find_element_by_xpath('//span[text()="提交"]').click() + # sleep(3) + # chrome.find_element_by_xpath('//button[@class="el-button el-button--primary el-button--mini"]').click() + break + #方案二===============结束 + # lock.release() + while True: + try: + if chrome.find_element_by_xpath('//p[text()="流程结束"]').is_displayed() == True: + # print('订单完成了') + break + except: + continue + sleep(2) + # chrome.find_element_by_xpath('//button[@class="el-button el-button--primary el-button--mini"]').click() + # chrome.switch_to.default_content() + # chrome.switch_to.frame(chrome.find_element_by_xpath('(//iframe[@class="metro-main-frame"])[2]')) + # sleep(20) + # while True: + # try: + # if chrome.find_element_by_xpath('//span[text()="%s"]'%orderno).is_displayed()==True: + # print('//span[text()="%s"]'%orderno) + # break + # except: + # continue + print('寄售配货单创建完成') + end = time.clock() + print(start, end) + print('CPU执行时间: ', end - start) + imgInfo = getErrorPhoto(chrome) + imgName = imgInfo[0] + image_path = imgInfo[1] + info='执行耗时'+str(end - start) + now = get_time() + writeFile_append(pro_path + '/logs/catalina.out', info) + send_email1(image_path, info) + except Exception as e: + print('出现异常') + # 将日志写入到文件中单独存储 + pro_path = get_pro_path() + traceback.print_exc() + imgInfo = getErrorPhoto(chrome) + imgName = imgInfo[0] + image_path = imgInfo[1] + print(imgName, image_path) + print(repr(e)) + info = repr(e) + now = get_time() + writeFile_append(pro_path + '/logs/logerror%s.txt' % now, info) + # send_email1(image_path, info) +if __name__ == "__main__": + # 创建多线程时, 需要制定该线程执行的任务.name线程名字 target目标函数名 + # t1 = threading.Thread(target=job,name="job1") + # t2 = threading.Thread(target=job,name="job2") + # t1.start() + # t2.start() + # opt = ChromeOptions() # 创建 Chrome 参数对象 + # # opt.headless = True # 把 Chrome 设置成无界面模式,windows/Linux 皆可 + # opt.headless = False # 把 Chrome 设置成无界面模式,windows/Linux 皆可 + # opt.add_argument('--start-maximized') + # opt.add_argument('--window-size=1280x1024') + # # chrome = Chrome(options=opt) # 创建无界面对象 + # chrome = WebChrome(chrome_options=opt) # airtest中的类 + + count=1 + for i in range(count): + t = threading.Thread(target=job) + t.start() + # t.join() + +def start1(): + count = 5 + for i in range(count): + t = threading.Thread(target=job) + t.start() + t.join() + + # print(threading.active_count()) + # print("程序执行结束.....") + # create_salesorder() diff --git "a/testcase/od/\345\244\232\346\230\216\347\273\206/\346\211\213\346\234\257\345\200\237\345\207\272\345\215\225\345\244\232\346\230\216\347\273\206100.py" "b/testcase/od/\345\244\232\346\230\216\347\273\206/\346\211\213\346\234\257\345\200\237\345\207\272\345\215\225\345\244\232\346\230\216\347\273\206100.py" new file mode 100644 index 0000000000000000000000000000000000000000..6474b6eb476641d9be582fe8bae7fc7a9533058c --- /dev/null +++ "b/testcase/od/\345\244\232\346\230\216\347\273\206/\346\211\213\346\234\257\345\200\237\345\207\272\345\215\225\345\244\232\346\230\216\347\273\206100.py" @@ -0,0 +1,375 @@ +import datetime +import threading +import time +import traceback + +from airtest.core.api import * +from selenium import webdriver +from selenium.webdriver import DesiredCapabilities +from selenium.webdriver.common.keys import Keys +from airtest_selenium.proxy import * +from selenium.webdriver import Chrome, ChromeOptions +from airtest.core.api import * +from airtest_selenium.proxy import * + +from mail1 import send_email1 +from public.tools import * + + + + +# chrome = webdriver.Chrome(chrome_options=opt) + +def job(): + print("这是一个需要执行的任务。。。。。") + create_salesorder() + print("当前线程的个数:", threading.active_count()) + time.sleep(1) + print("当前线程的信息:", threading.current_thread()) +def add_goods(goodsname,chrome): + chrome.find_element_by_xpath( + '//input[@placeholder="模糊检索:商品编码,商品名称,规格型号,厂家物料编码,存储条件"]').send_keys( + goodsname) + chrome.find_element_by_xpath( + '//input[@placeholder="模糊检索:商品编码,商品名称,规格型号,厂家物料编码,存储条件"]').send_keys( + Keys.ENTER) + #获取页数 + # pagecount=chrome.find_element_by_xpath('(// li[ @class ="number"])[16]').text + pagecount=10 + for i in range(int(pagecount)): + # chrome.find_element_by_xpath('//span[text()="添加商品"]').click() + # chrome.find_element_by_xpath( + # '//input[@placeholder="模糊检索:商品编码,商品名称,规格型号,主计量单位,销售计量单位,厂家物料编码,存储条件说明,生产企业编码,供应商编码,行类型,商品性质,批发价,进口/国产/港澳台,件包数,产品备注,是否免备案,产品描述"]').send_keys( + # goodsname) + # chrome.find_element_by_xpath( + # '//input[@placeholder="模糊检索:商品编码,商品名称,规格型号,主计量单位,销售计量单位,厂家物料编码,存储条件说明,生产企业编码,供应商编码,行类型,商品性质,批发价,进口/国产/港澳台,件包数,产品备注,是否免备案,产品描述"]').send_keys( + # Keys.ENTER) + sleep(1) + chrome.find_element_by_xpath( + '//th[@class="el-table_15_column_131 multiple-column el-table-column--selection is-leaf headerCellClassName el-table__cell"]/div/label/span/span').click() + #翻页 + chrome.find_element_by_xpath('(//button[@class="btn-next is-last"])[5]').click() + + #点击确定 + # chrome.find_element_by_xpath('(//div[@class="el-dialog__body"]/div[2]/span/button[1]/span)[5]').click() + sleep(1) + +def create_salesorder(type=1): + try: + import time + pro_path = get_pro_path() + start = time.clock() + # caps = DesiredCapabilities().CHROME + # caps["pageLoadStrategy"] = "normal" # complete + # caps["pageLoadStrategy"] = "eager" # interactive + # caps["pageLoadStrategy"] = "none" + # chrome = webdriver.Chrome(desired_capabilities=caps) + opt = ChromeOptions() # 创建 Chrome 参数对象 + # opt.headless = True # 把 Chrome 设置成无界面模式,windows/Linux 皆可 + opt.headless = False # 把 Chrome 设置成无界面模式,windows/Linux 皆可 + opt.add_argument('--start-maximized') + opt.add_argument('--window-size=1280x1024') + # chrome = Chrome(options=opt) # 创建无界面对象 + # chrome = WebChrome(chrome_options=opt) + chrome = WebChrome(chrome_options=opt) + # chrome=webdriver.Chrome() + chrome.implicitly_wait(20) + chrome.get("http://10.17.65.200:8088/portal/") + # chrome.get("http://10.17.65.207:8088/uat/r/w") + sleep(2) + chrome.implicitly_wait(30) + chrome.maximize_window() + chrome.find_element_by_id('input1').clear() + chrome.find_element_by_id('input1').send_keys('admin') + chrome.find_element_by_id('input2').clear() + chrome.find_element_by_id('input2').send_keys('Gyxc1234') + chrome.find_element_by_id('input2').send_keys(Keys.ENTER) + while True: + try: + if(chrome.find_element_by_xpath('//span[text()="退出"]').is_displayed()==True): + break + except: + continue + # 切换所属公司 + chrome.find_element_by_class_name('changeCom').click() + sleep(1) + chrome.find_element_by_xpath('//span[text()="国药集团北京医疗器械有限公司"]/following-sibling::button').click() + sleep(1) + chrome.find_element_by_xpath('// button[text() = "确定"]').click() + sleep(1) + # chrome.find_element_by_xpath('//div[text()="销售管理"]').click() + # actions = ActionChains(chrome) + # actions.move_to_element(chrome.find_element_by_xpath('//div[text()="销售业务"]')).perform() + # chrome.find_element_by_xpath('//span[text()="销售订单"]').click() + order_link = chrome.find_element_by_xpath('//span[text()="手术借出单"]') + chrome.execute_script("arguments[0].click();", order_link) + chrome.switch_to.frame(chrome.find_element_by_xpath('(//iframe[@class="metro-main-frame"])[2]')) + sleep(2) + chrome.find_element_by_xpath('//span[text()="新建"]').click() + sleep(2) + chrome.switch_to.frame(chrome.find_element_by_xpath('//iframe[contains(@name,"awsui-dialog-iframe")]')) + #获取订单号 + + orderno=chrome.find_element_by_xpath('//div[text() = "借出单号 "]/following-sibling::div/span').text + print(orderno) + # chrome.switch_to.default_content() + sleep(2) + # while True: + # try: + # if chrome.find_element_by_xpath('//div[text()="订单公司名称 "]').is_displayed(): + # print(chrome.find_element_by_xpath('//div[text()="订单公司名称 "]').text) + # break + # except: + # continue + # print(chrome.find_element_by_xpath('//div[text()="订单公司名称 "]').text) + sleep(2) + # chrome.find_element_by_xpath( + # '//div[text()="公司名称 "]/following-sibling::div/div/div/div/div/div/div/div/span/span/i').click() + # chrome.find_element_by_xpath('//input[@placeholder="模糊检索:公司名称,公司编码"]').send_keys('国药集团北京') + # chrome.find_element_by_xpath('//input[@placeholder="模糊检索:公司名称,公司编码"]').send_keys(Keys.ENTER) + # chrome.find_element_by_xpath('//button[@class="el-button el-button--primary el-button--mini"]').click() + # chrome.find_element_by_xpath('(//span[@class="el-radio__inner"])[1]').click() + # chrome.find_element_by_xpath('//span[@class="ensureBtn"]/button').click() + # chrome.find_element_by_xpath('//button[@class="el-button el-button--primary el-button--mini"]').click() + + + + # 业务员名称 + chrome.find_element_by_xpath( + '//div[text()="业务员名称 "]/following-sibling::div/div/div/div/div/div/div/div/span/span/i').click() + chrome.find_element_by_xpath('//input[@placeholder="模糊检索:员工编码,员工名称,部门编码,部门名称"]').send_keys('chenshuheng') + chrome.find_element_by_xpath('//input[@placeholder="模糊检索:员工编码,员工名称,部门编码,部门名称"]').send_keys( + Keys.ENTER) + chrome.find_element_by_xpath( + '(//div[text()="chenshuheng"])[3]/ancestor-or-self::td/preceding-sibling::td/div/label/span/span').click() + chrome.find_element_by_xpath('(//span[@class="ensureBtn"]/button[1])[1]').click() + + #手术类型 + chrome.find_element_by_xpath('(//input[@placeholder="请选择" and @type="text"])').click() + sleep(1) + chrome.find_element_by_xpath('//li[text()="初次手术"]').click() + sleep(1) + #手术种类 + chrome.find_element_by_xpath('(//input[@placeholder="请选择" and @type="text"])[2]').click() + sleep(1) + chrome.find_element_by_xpath('//li[text()="髋关节"]').click() + sleep(1) + chrome.find_element_by_xpath('//label[text()="手术日期 "]/following-sibling::div/div').click() + sleep(1) + chrome.find_element_by_xpath('//div[ @class ="el-date-table-cell"] // span[text()="31"]').click() + + #客户信息页签 + chrome.find_element_by_xpath('//div[text()="客户信息"]').click() + chrome.find_element_by_xpath('//div[text()="客户名称 "]/following-sibling::div/div/div/div/div/div/div/div/span/span/i').click() + chrome.find_element_by_xpath('//input[@placeholder="模糊检索:客户编码,客户名称"]').send_keys('北京大学第三医院') + chrome.find_element_by_xpath('//input[@placeholder="模糊检索:客户编码,客户名称"]').send_keys(Keys.ENTER) + # chrome.find_element_by_xpath('//span/input[@type="radio" and @value="03105272b49986351ef7eb2930b5454de"]').click() + btn_div= chrome.find_element_by_xpath('//span/input[@type="radio" and @value="083165b4f865526823ef04a27fa9cd7c1"]') + chrome.execute_script("arguments[0].click();", btn_div) + chrome.find_element_by_xpath('(//button[@class="el-button el-button--primary el-button--default"])[3]').click() + + #医院名称 + chrome.find_element_by_xpath( + '//div[text()="医院名称 "]/following-sibling::div/div/div/div/div/div/div/div/span/span/i').click() + chrome.find_element_by_xpath('//input[@placeholder="模糊检索:客户编码,客商名称"]').send_keys('北京大学第三医院') + chrome.find_element_by_xpath('//input[@placeholder="模糊检索:客户编码,客商名称"]').send_keys(Keys.ENTER) + # chrome.find_element_by_xpath('//span/input[@type="radio" and @value="03105272b49986351ef7eb2930b5454de"]').click() + btn_div = chrome.find_element_by_xpath( + '//span/input[@type="radio" and @value="0c4d395678c596b20aa6c2a2fef3483d4"]') + chrome.execute_script("arguments[0].click();", btn_div) + chrome.find_element_by_xpath('(//button[@class="el-button el-button--primary el-button--default"])[3]').click() + + # chrome.find_element_by_xpath('//div[text()="仓库信息"]').click() + # chrome.find_element_by_xpath( + # '//div[text()="合同号 "]/following-sibling::div/div/div/div/div/div/div/div/span/span/i').click() + # chrome.find_element_by_xpath('//input[@placeholder="模糊检索:合同号,合同协议号,对方编码,项目名称,项目编码,业态编码,参考部门,参考部门编码,参考业务员,参考业务员编码,产品线名称,产品线编码,合同类型,合同属性"]').send_keys('38443') + # chrome.find_element_by_xpath('//input[@placeholder="模糊检索:合同号,合同协议号,对方编码,项目名称,项目编码,业态编码,参考部门,参考部门编码,参考业务员,参考业务员编码,产品线名称,产品线编码,合同类型,合同属性"]').send_keys(Keys.ENTER) + # chrome.find_element_by_xpath('//div[@class="multiple-header string_col" and text()="38443"]/ancestor-or-self::td/preceding-sibling::td/div/label/span/span').click() + # chrome.find_element_by_xpath('(//button[@class="el-button el-button--primary el-button--default"])[4]').click() + # #业务员名称 + # chrome.find_element_by_xpath( + # '//div[text()="业务员名称 "]/following-sibling::div/div/div/div/div/div/div/div/span/span/i').click() + # chrome.find_element_by_xpath('//input[@placeholder="模糊检索:业务员名称,业务员编码,业务部门名称,业务部门编码,部门类型编码"]').send_keys('杨春刚') + # chrome.find_element_by_xpath('//input[@placeholder="模糊检索:业务员名称,业务员编码,业务部门名称,业务部门编码,部门类型编码"]').send_keys(Keys.ENTER) + # chrome.find_element_by_xpath('(//div[text()="杨春刚"])[3]/ancestor-or-self::td/preceding-sibling::td/div/label/span/span').click() + # chrome.find_element_by_xpath('(//span[@class="ensureBtn"]/button[1])[4]').click() + # #其他信息页签 + # chrome.find_element_by_xpath('//div[text()="其他信息"]').click() + # chrome.find_element_by_xpath('//div[@cid="AWSUI.SwitchButton"]//div/div/div/div/span[1]').click() + # 子表信息录入 + chrome.find_element_by_xpath('//div[text()="主体信息"]').click() + # chrome.find_element_by_xpath('//span[text()="添加商品"]').click() + # 点击添加商品弹出添加商品子窗口 + for i in range(1): + chrome.find_element_by_xpath('//span[text()="添加商品"]').click() + add_goods('PTCA', chrome) + chrome.find_element_by_xpath('(//button[@class="el-button el-button--primary el-button--default"])[5]').click() + sleep(10) + for i in range(1, 101): + element = chrome.find_element_by_xpath('(//td[@colid="col_89"])[%s]' % i) + chrome.execute_script("arguments[0].click();", element) + + # element=chrome.find_element_by_xpath('(//td[@colid="col_177"])[%s]'%i) + # element.click() + sleep(2) + # element.send_keys("1") + # chrome.execute_script("document.getElementsByClassName('awsui-input-number-right')[0].value='1'") + chrome.find_element_by_class_name('awsui-input-number-right').send_keys('1') + # chrome.find_element_by_xpath('//td[@colid="col_177"]/div/div').send_keys('1') + sleep(2) + # chrome.find_element_by_xpath('(//td[@colid="col_178"])[%s]'%i).click() + element = chrome.find_element_by_xpath('(//td[@colid="col_90"])[%s]' % i) + chrome.execute_script("arguments[0].click();", element) + sleep(2) + + + # chrome.find_element_by_xpath( + # '//input[@placeholder="模糊检索:商品编码,商品名称,规格型号,厂家物料编码,存储条件"]').send_keys( + # '10214724') + # chrome.find_element_by_xpath( + # '//input[@placeholder="模糊检索:商品编码,商品名称,规格型号,厂家物料编码,存储条件"]').send_keys( + # Keys.ENTER) + # sleep(1) + # chrome.find_element_by_xpath('(//span[@class="el-checkbox__inner"])[4]').click() + # chrome.find_element_by_xpath('(//div[@class="el-dialog__body"]/div[2]/span/button[1]/span)[4]').click() + # sleep(3) + # 滚动条右拉 + # chrome.execute_script("document.getElementsByClassName('vxe-table--footer-wrapper body--wrapper')[0].scrollLeft = 2000"); + + # element=chrome.find_element_by_xpath('//td[@colid="col_89"]') + # element.click() + # sleep(2) + # # element.send_keys("1") + # # chrome.execute_script("document.getElementsByClassName('awsui-input-number-right')[0].value='1'") + # chrome.find_element_by_class_name('awsui-input-number-right').send_keys('1') + # sleep(2) + # chrome.find_element_by_xpath('//td[@colid="col_90"]').click() + #滚动条右拉 + # document.getElementsByClassName('vxe-table--footer-wrapper body--wrapper')[0].scrollLeft = 5000 + # chrome.execute_script("document.getElementsByClassName('vxe-table--footer-wrapper body--wrapper')[0].scrollLeft = 2000"); + # element = chrome.find_element_by_xpath('//td[@colid="col_197"]') + # element.click() + # sleep(6) + # chrome.execute_script("document.getElementsByClassName('awsui-input-number-right')[0].value='8'") + # sleep(2) + # element = chrome.find_element_by_xpath('//td[@colid="col_198"]') + # element.click() + # sleep(6) + # chrome.execute_script("document.getElementsByClassName('awsui-input-number-right')[0].value='8'") + # sleep(2) + # lock = threading.Lock() + # lock.acquire() + #方案一============================开始 + # if user_count<=5: + if type==1: + import datetime + now = datetime.datetime.now() + one_minutes_later = now + datetime.timedelta(minutes=1) + now = now.strftime('%Y-%m-%d %H:%M') + one_minutes_later = one_minutes_later.strftime('%Y-%m-%d %H:%M') + # print('bbbbbbbb'+one_minutes_later) + while True: + now = datetime.datetime.now().strftime('%Y-%m-%d %H:%M') + # print('变化的时间' + now) + if now == one_minutes_later: + print('时间到了') + start = time.clock() + chrome.find_element_by_xpath('//span[text()="提交"]').click() + break + # 方案一============================结束 + #方案二===============开始 + if type==2: + m=get_time_m() #当前时间的分钟 + m1=get_submit_time(m)#计划提交时间的分钟 + while True: + m2=get_time_m() #循环获取当前的分 + # sleep(60) + if (m2==m1): + start = time.clock() + chrome.find_element_by_xpath('//span[text()="提交"]').click() + break + #方案二===============结束 + while True: + try: + if chrome.find_element_by_xpath('//p[text()="共享任务创建成功"]').is_displayed()==True: + # print('订单完成了') + break + # else: + # print('共享任务创建成功的元素没有出现') + except: + continue + # lock.release() + # while True: + # try: + # if chrome.find_element_by_xpath('//p[text()="共享任务创建成功"]').is_displayed() == True: + # # print('订单完成了') + # break + # except: + # continue + sleep(2) + # chrome.find_element_by_xpath('//button[@class="el-button el-button--primary el-button--mini"]').click() + chrome.switch_to.default_content() + chrome.switch_to.frame(chrome.find_element_by_xpath('(//iframe[@class="metro-main-frame"])[2]')) + # sleep(20) + while True: + try: + if chrome.find_element_by_xpath('(//span[text()="%s"])[2]'%orderno).is_displayed()==True: + print('//span[text()="%s"])[2]'%orderno) + break + except: + continue + print('手术借出单创建完成') + end = time.clock() + print(start, end) + print('CPU执行时间: ', end - start) + imgInfo = getErrorPhoto(chrome) + imgName = imgInfo[0] + image_path = imgInfo[1] + info=orderno+'执行耗时'+str(end - start) + now = get_time() + writeFile_append(pro_path + '/logs/catalina.out', info) + send_email1(image_path, info) + except Exception as e: + print('出现异常') + # 将日志写入到文件中单独存储 + pro_path = get_pro_path() + traceback.print_exc() + imgInfo = getErrorPhoto(chrome) + imgName = imgInfo[0] + image_path = imgInfo[1] + print(imgName, image_path) + print(repr(e)) + info = repr(e) + now = get_time() + writeFile_append(pro_path + '/logs/logerror%s.txt' % now, info) + # send_email1(image_path, info) +if __name__ == "__main__": + # 创建多线程时, 需要制定该线程执行的任务.name线程名字 target目标函数名 + # t1 = threading.Thread(target=job,name="job1") + # t2 = threading.Thread(target=job,name="job2") + # t1.start() + # t2.start() + # opt = ChromeOptions() # 创建 Chrome 参数对象 + # # opt.headless = True # 把 Chrome 设置成无界面模式,windows/Linux 皆可 + # opt.headless = False # 把 Chrome 设置成无界面模式,windows/Linux 皆可 + # opt.add_argument('--start-maximized') + # opt.add_argument('--window-size=1280x1024') + # # chrome = Chrome(options=opt) # 创建无界面对象 + # chrome = WebChrome(chrome_options=opt) # airtest中的类 + + count=1 + for i in range(count): + t = threading.Thread(target=job) + t.start() + t.join() + +def start1(): + count = 5 + for i in range(count): + t = threading.Thread(target=job) + t.start() + t.join() + + # print(threading.active_count()) + # print("程序执行结束.....") + # create_salesorder() diff --git "a/testcase/od/\345\244\232\346\230\216\347\273\206/\346\211\213\346\234\257\350\257\267\351\242\206\345\215\225\345\244\232\346\230\216\347\273\206100.py" "b/testcase/od/\345\244\232\346\230\216\347\273\206/\346\211\213\346\234\257\350\257\267\351\242\206\345\215\225\345\244\232\346\230\216\347\273\206100.py" new file mode 100644 index 0000000000000000000000000000000000000000..2a9aaa161af4b4cea4c765a230d5bb1599d035a5 --- /dev/null +++ "b/testcase/od/\345\244\232\346\230\216\347\273\206/\346\211\213\346\234\257\350\257\267\351\242\206\345\215\225\345\244\232\346\230\216\347\273\206100.py" @@ -0,0 +1,334 @@ +import datetime +import threading +import time +import traceback + +from airtest.core.api import * +from selenium import webdriver +from selenium.webdriver import DesiredCapabilities +from selenium.webdriver.common.keys import Keys +from airtest_selenium.proxy import * +from selenium.webdriver import Chrome, ChromeOptions +from airtest.core.api import * +from airtest_selenium.proxy import * + +from mail1 import send_email1 +from public.tools import * + + + + +# chrome = webdriver.Chrome(chrome_options=opt) + +def job(): + print("这是一个需要执行的任务。。。。。") + create_salesorder() + print("当前线程的个数:", threading.active_count()) + time.sleep(1) + print("当前线程的信息:", threading.current_thread()) +def add_goods(goodsname,chrome): + chrome.find_element_by_xpath( + '//input[@placeholder="模糊检索:商品编码,商品名称"]').send_keys( + goodsname) + sleep(2) + chrome.find_element_by_xpath( + '//input[@placeholder="模糊检索:商品编码,商品名称"]').send_keys( + Keys.ENTER) + sleep(2) + #获取页数 + # pagecount=chrome.find_element_by_xpath('(// li[ @class ="number"])[16]').text + pagecount=10 + for i in range(int(pagecount)): + # chrome.find_element_by_xpath('//span[text()="添加商品"]').click() + # chrome.find_element_by_xpath( + # '//input[@placeholder="模糊检索:商品编码,商品名称,规格型号,主计量单位,销售计量单位,厂家物料编码,存储条件说明,生产企业编码,供应商编码,行类型,商品性质,批发价,进口/国产/港澳台,件包数,产品备注,是否免备案,产品描述"]').send_keys( + # goodsname) + # chrome.find_element_by_xpath( + # '//input[@placeholder="模糊检索:商品编码,商品名称,规格型号,主计量单位,销售计量单位,厂家物料编码,存储条件说明,生产企业编码,供应商编码,行类型,商品性质,批发价,进口/国产/港澳台,件包数,产品备注,是否免备案,产品描述"]').send_keys( + # Keys.ENTER) + sleep(1) + chrome.find_element_by_xpath( + '//th[@class="el-table_15_column_145 multiple-column el-table-column--selection is-leaf headerCellClassName el-table__cell"]/div/label/span/span').click() + sleep(2) + #翻页 + chrome.find_element_by_xpath('(//button[@class="btn-next is-last"])[5]').click() + + #点击确定 + # chrome.find_element_by_xpath('(//div[@class="el-dialog__body"]/div[2]/span/button[1]/span)[5]').click() + sleep(1) + +def create_salesorder(type=1): + import time + pro_path = get_pro_path() + start = time.clock() + # caps = DesiredCapabilities().CHROME + # caps["pageLoadStrategy"] = "normal" # complete + # caps["pageLoadStrategy"] = "eager" # interactive + # caps["pageLoadStrategy"] = "none" + # chrome = webdriver.Chrome(desired_capabilities=caps) + opt = ChromeOptions() # 创建 Chrome 参数对象 + opt.headless = True # 把 Chrome 设置成无界面模式,windows/Linux 皆可 + # opt.headless = False # 把 Chrome 设置成无界面模式,windows/Linux 皆可 + opt.add_argument('--start-maximized') + opt.add_argument('--window-size=1280x1024') + # chrome = Chrome(options=opt) # 创建无界面对象 + # chrome = WebChrome(chrome_options=opt) + # chrome = WebChrome(chrome_options=opt) + chrome = webdriver.Chrome(chrome_options=opt) + chrome.implicitly_wait(20) + try: + chrome.get("http://10.17.65.200:8088/portal/") + # chrome.get("http://10.17.65.207:8088/uat/r/w") + sleep(2) + chrome.implicitly_wait(30) + chrome.maximize_window() + chrome.find_element_by_id('input1').clear() + chrome.find_element_by_id('input1').send_keys('admin') + chrome.find_element_by_id('input2').clear() + chrome.find_element_by_id('input2').send_keys('Gyxc1234') + chrome.find_element_by_id('input2').send_keys(Keys.ENTER) + while True: + try: + if(chrome.find_element_by_xpath('//span[text()="退出"]').is_displayed()==True): + break + except: + continue + # 切换所属公司 + chrome.find_element_by_class_name('changeCom').click() + sleep(1) + chrome.find_element_by_xpath('//span[text()="国药集团北京医疗器械有限公司"]/following-sibling::button').click() + sleep(1) + chrome.find_element_by_xpath('// button[text() = "确定"]').click() + sleep(1) + order_link = chrome.find_element_by_xpath('//span[text()="手术请领单"]') + chrome.execute_script("arguments[0].click();", order_link) + chrome.switch_to.frame(chrome.find_element_by_xpath('(//iframe[@class="metro-main-frame"])[2]')) + sleep(2) + chrome.find_element_by_xpath('//span[text()="新建"]').click() + sleep(2) + chrome.switch_to.frame(chrome.find_element_by_xpath('//iframe[contains(@name,"awsui-dialog-iframe")]')) + #获取订单号 + + orderno=chrome.find_element_by_xpath('//div[text() = "请领单号 "]/following-sibling::div/span').text + print(orderno) + sleep(2) + + # 业务员名称 + chrome.find_element_by_xpath( + '//div[text()="业务员名称 "]/following-sibling::div/div/div/div/div/div/div/div/span/span/i').click() + sleep(2) + chrome.find_element_by_xpath('//input[@placeholder="模糊检索:员工编码,员工名称,部门编码,部门名称"]').send_keys('chenshuheng') + sleep(2) + chrome.find_element_by_xpath('//input[@placeholder="模糊检索:员工编码,员工名称,部门编码,部门名称"]').send_keys( + Keys.ENTER) + sleep(2) + chrome.find_element_by_xpath( + '(//div[text()="chenshuheng"])[3]/ancestor-or-self::td/preceding-sibling::td/div/label/span/span').click() + chrome.find_element_by_xpath('(//span[@class="ensureBtn"]/button[1])[1]').click() + + #手术类型 + chrome.find_element_by_xpath('(//input[@placeholder="请选择" and @type="text"])').click() + sleep(1) + chrome.find_element_by_xpath('//li[text()="初次手术"]').click() + sleep(1) + #手术种类 + chrome.find_element_by_xpath('(//input[@placeholder="请选择" and @type="text"])[2]').click() + sleep(1) + chrome.find_element_by_xpath('//li[text()="髋关节"]').click() + sleep(1) + chrome.find_element_by_xpath('//label[text()="手术日期 "]/following-sibling::div/div').click() + sleep(1) + chrome.find_element_by_xpath('//div[ @class ="el-date-table-cell"] // span[text()="31"]').click() + + #客户信息页签 + chrome.find_element_by_xpath('//div[text()="客户信息"]').click() + chrome.find_element_by_xpath('//div[text()="客户名称 "]/following-sibling::div/div/div/div/div/div/div/div/span/span/i').click() + chrome.find_element_by_xpath('//input[@placeholder="模糊检索:客户编码,客户名称"]').send_keys('北京大学第三医院') + chrome.find_element_by_xpath('//input[@placeholder="模糊检索:客户编码,客户名称"]').send_keys(Keys.ENTER) + # chrome.find_element_by_xpath('//span/input[@type="radio" and @value="03105272b49986351ef7eb2930b5454de"]').click() + btn_div= chrome.find_element_by_xpath('//span/input[@type="radio" and @value="02f94bb93be972567166f428524aa3b43"]') + chrome.execute_script("arguments[0].click();", btn_div) + chrome.find_element_by_xpath('(//button[@class="el-button el-button--primary el-button--default"])[3]').click() + + #医院名称 + chrome.find_element_by_xpath( + '//div[text()="医院名称 "]/following-sibling::div/div/div/div/div/div/div/div/span/span/i').click() + chrome.find_element_by_xpath('//input[@placeholder="模糊检索:客户编码,客商名称"]').send_keys('北京大学第三医院') + chrome.find_element_by_xpath('//input[@placeholder="模糊检索:客户编码,客商名称"]').send_keys(Keys.ENTER) + # chrome.find_element_by_xpath('//span/input[@type="radio" and @value="03105272b49986351ef7eb2930b5454de"]').click() + btn_div = chrome.find_element_by_xpath( + '//span/input[@type="radio" and @value="0c4d395678c596b20aa6c2a2fef3483d4"]') + chrome.execute_script("arguments[0].click();", btn_div) + chrome.find_element_by_xpath('(//button[@class="el-button el-button--primary el-button--default"])[4]').click() + + # 子表信息录入 + chrome.find_element_by_xpath('//div[text()="主体信息"]').click() + for i in range(1): + chrome.find_element_by_xpath('//span[text()="添加商品"]').click() + add_goods('PTCA', chrome) + chrome.find_element_by_xpath( + '(//button[@class="el-button el-button--primary el-button--default"])[5]').click() + sleep(30) + + for i in range(1, 101): + element = chrome.find_element_by_xpath('(//td[@colid="col_75"])[%s]' % i) + sleep(2) + chrome.execute_script("arguments[0].click();", element) + + # element=chrome.find_element_by_xpath('(//td[@colid="col_177"])[%s]'%i) + # element.click() + sleep(2) + # element.send_keys("1") + # chrome.execute_script("document.getElementsByClassName('awsui-input-number-right')[0].value='1'") + chrome.find_element_by_class_name('awsui-input-number-right').send_keys('1') + # chrome.find_element_by_xpath('//td[@colid="col_177"]/div/div').send_keys('1') + sleep(2) + # chrome.find_element_by_xpath('(//td[@colid="col_178"])[%s]'%i).click() + element = chrome.find_element_by_xpath('(//td[@colid="col_76"])[%s]' % i) + chrome.execute_script("arguments[0].click();", element) + sleep(2) + sleep(2) + chrome.find_element_by_xpath('//span[text()="提交"]').click() + while True: + try: + if chrome.find_element_by_xpath('//p[text()="共享任务创建成功"]').is_displayed() == True: + # print('订单完成了') + break + except: + continue + # lock.release() + sleep(2) + # chrome.find_element_by_xpath('//button[@class="el-button el-button--primary el-button--mini"]').click() + # chrome.switch_to.default_content() + # chrome.switch_to.frame(chrome.find_element_by_xpath('(//iframe[@class="metro-main-frame"])[2]')) + # # sleep(20) + # while True: + # try: + # if chrome.find_element_by_xpath('//span[text()="%s"]'%orderno).is_displayed()==True: + # print('//span[text()="%s"]'%orderno) + # break + # except: + # continue + # 进入手术配货单 + chrome.switch_to.default_content() + sleep(3) + chrome.find_element_by_xpath('//span[@class="awsui-tabs-icon close"]').click() + sleep(1) + order_link = chrome.find_element_by_xpath('//span[text()="手术配货单"]') + chrome.execute_script("arguments[0].click();", order_link) + chrome.switch_to.frame(chrome.find_element_by_xpath('(//iframe[@class="metro-main-frame"])[2]')) + sleep(2) + # 输入请领单号 + chrome.find_element_by_xpath('//label[text()="请领单号"]/parent::div/div/div/div/input').send_keys(orderno) + sleep(1) + chrome.find_element_by_xpath('//label[text()="请领单号"]/parent::div/div/div/div/input').send_keys(Keys.ENTER) + sleep(1) + # chrome.switch_to.frame(chrome.find_element_by_xpath('//iframe[contains(@name,"awsui-dialog-iframe")]')) + sleep(1) + # text1 = chrome.find_element_by_xpath('(//span[text()="QLD23082800037B"])[2]').text + # print(text1) + chrome.find_element_by_xpath( + '//span[text()="%s"]//parent::div/parent::td//preceding-sibling::td[1]/div/span' % orderno).click() + # element = chrome.find_element_by_xpath('(//span[@class="vxe-checkbox--icon vxe-checkbox--unchecked-icon"])[2]') + # chrome.execute_script("arguments[0].click();", element) + sleep(1) + chrome.switch_to.frame(chrome.find_element_by_xpath('//iframe[contains(@name,"awsui-dialog-iframe")]')) + sleep(1) + # 方案一============================开始 + # if user_count<=5: + if type == 1: + import datetime + now = datetime.datetime.now() + one_minutes_later = now + datetime.timedelta(minutes=1) + now = now.strftime('%Y-%m-%d %H:%M') + one_minutes_later = one_minutes_later.strftime('%Y-%m-%d %H:%M') + # print('bbbbbbbb'+one_minutes_later) + while True: + now = datetime.datetime.now().strftime('%Y-%m-%d %H:%M') + # print('变化的时间' + now) + if now == one_minutes_later: + print('时间到了') + start = time.clock() + chrome.find_element_by_xpath('//span[text()="提交"]').click() + break + # 方案一============================结束 + # 方案二===============开始 + if type == 2: + m = get_time_m() # 当前时间的分钟 + m1 = get_submit_time1(m) # 计划提交时间的分钟 + print(' # 计划提交时间的分钟',m1) + while True: + m2 = get_time_m() # 循环获取当前的分 + # sleep(60) + if (m2 == m1): + print('时间到了') + start = time.clock() + chrome.find_element_by_xpath('//span[text()="提交"]').click() + break + # 方案二===============结束# + + # chrome.find_element_by_xpath('//span[text()="提交"]').click() + while True: + try: + if chrome.find_element_by_xpath('//p[text()="流程结束"]').is_displayed() == True: + # print('订单完成了') + break + except: + continue + # chrome.find_element_by_xpath('//span[text()="批量提交"]').click() + sleep(1) + print('手术请领配货单创建完成') + end = time.clock() + print(start, end) + print('CPU执行时间: ', end - start) + imgInfo = getErrorPhoto(chrome) + imgName = imgInfo[0] + image_path = imgInfo[1] + info=orderno+'执行耗时'+str(end - start) + now = get_time() + writeFile_append(pro_path + '/logs/catalina.out', info) + send_email1(image_path, info) + except Exception as e: + print('出现异常') + # 将日志写入到文件中单独存储 + pro_path = get_pro_path() + traceback.print_exc() + imgInfo = getErrorPhoto(chrome) + imgName = imgInfo[0] + image_path = imgInfo[1] + print(imgName, image_path) + print(repr(e)) + info = repr(e) + now = get_time() + writeFile_append(pro_path + '/logs/logerror%s.txt' % now, info) + # send_email1(image_path, info) +if __name__ == "__main__": + # 创建多线程时, 需要制定该线程执行的任务.name线程名字 target目标函数名 + # t1 = threading.Thread(target=job,name="job1") + # t2 = threading.Thread(target=job,name="job2") + # t1.start() + # t2.start() + # opt = ChromeOptions() # 创建 Chrome 参数对象 + # # opt.headless = True # 把 Chrome 设置成无界面模式,windows/Linux 皆可 + # opt.headless = False # 把 Chrome 设置成无界面模式,windows/Linux 皆可 + # opt.add_argument('--start-maximized') + # opt.add_argument('--window-size=1280x1024') + # # chrome = Chrome(options=opt) # 创建无界面对象 + # chrome = WebChrome(chrome_options=opt) # airtest中的类 + + count=1 + for i in range(count): + t = threading.Thread(target=job) + t.start() + t.join() + +def start1(): + count = 5 + for i in range(count): + t = threading.Thread(target=job) + t.start() + t.join() + + # print(threading.active_count()) + # print("程序执行结束.....") + # create_salesorder() diff --git "a/testcase/od/\345\244\232\346\230\216\347\273\206/\347\273\217\351\224\200\345\224\256\350\246\201\350\264\247\351\205\215\350\264\247\345\244\232\346\230\216\347\273\206100.py" "b/testcase/od/\345\244\232\346\230\216\347\273\206/\347\273\217\351\224\200\345\224\256\350\246\201\350\264\247\351\205\215\350\264\247\345\244\232\346\230\216\347\273\206100.py" new file mode 100644 index 0000000000000000000000000000000000000000..53161c7238f73b4635236fda257290bb167a55f0 --- /dev/null +++ "b/testcase/od/\345\244\232\346\230\216\347\273\206/\347\273\217\351\224\200\345\224\256\350\246\201\350\264\247\351\205\215\350\264\247\345\244\232\346\230\216\347\273\206100.py" @@ -0,0 +1,391 @@ +import datetime +import threading +import time +import traceback + +from airtest.core.api import * +from selenium import webdriver +from selenium.webdriver import DesiredCapabilities +from selenium.webdriver.common.keys import Keys +from airtest_selenium.proxy import * +from selenium.webdriver import Chrome, ChromeOptions +from airtest.core.api import * +from airtest_selenium.proxy import * +from selenium.webdriver.support.select import Select + +from mail1 import send_email1 +from public.tools import * + + + + +# chrome = webdriver.Chrome(chrome_options=opt) + +def job(): + print("这是一个需要执行的任务。。。。。") + create_salesorder() + print("当前线程的个数:", threading.active_count()) + time.sleep(1) + print("当前线程的信息:", threading.current_thread()) +def add_goods(goodsname,chrome): + chrome.find_element_by_xpath( + '//input[@placeholder="模糊检索:商品编码,商品名称,规格型号,采购计量单位,销售计量单位,生产厂家编码"]').send_keys( + goodsname) + chrome.find_element_by_xpath( + '//input[@placeholder="模糊检索:商品编码,商品名称,规格型号,采购计量单位,销售计量单位,生产厂家编码"]').send_keys( + Keys.ENTER) + # 获取页数 + # pagecount=chrome.find_element_by_xpath('(// li[ @class ="number"])[16]').text + pagecount = 10 + for i in range(int(pagecount)): + sleep(1) + chrome.find_element_by_xpath( + '//th[@class="el-table_15_column_192 multiple-column el-table-column--selection is-leaf headerCellClassName el-table__cell"]/div/label/span/span').click() + # 翻页 + chrome.find_element_by_xpath('(//button[@class="btn-next is-last"])[5]').click() + + +sleep(1) + + +#配货函数 +def match_goods(chrome,orderno,type): + chrome.switch_to.default_content() + sleep(1) + chrome.find_element_by_xpath('//span[@class="awsui-tabs-icon close"]').click() + sleep(1) + order_link = chrome.find_element_by_xpath('//span[text()="分配经销商要货"]') + chrome.execute_script("arguments[0].click();", order_link) + chrome.switch_to.frame(chrome.find_element_by_xpath('(//iframe[@class="metro-main-frame"])[2]')) + sleep(2) + chrome.switch_to.frame(chrome.find_element_by_xpath('//iframe[contains(@name,"awsui-dialog-iframe")]')) + sleep(2) + s = Select(chrome.find_element_by_id('purchasingCoOptSelect')) + s.select_by_index(0) + sleep(2) + # chrome.find_element_by_xpath('//li[text()="北京大学第三医院(3)"]').click() + # sleep(1) + chrome.find_element_by_xpath('//span[text()="%s"]'%orderno).click() + sleep(4) + # 点击自动填充按钮 + chrome.find_element_by_xpath('//button[text()="自动填充"]').click() + # sleep(4) + while True: + try: + chrome.find_element_by_xpath('//button[text()="提交"]').click() + break + except: + continue + sleep(2) + # chrome.find_element_by_xpath('//a[text()="确认"]').click() + sleep(1) + + # 方案一============================开始 + if type == 1: + import datetime + now = datetime.datetime.now() + one_minutes_later = now + datetime.timedelta(minutes=1) + now = now.strftime('%Y-%m-%d %H:%M') + one_minutes_later = one_minutes_later.strftime('%Y-%m-%d %H:%M') + # print('bbbbbbbb'+one_minutes_later) + while True: + now = datetime.datetime.now().strftime('%Y-%m-%d %H:%M') + # print('变化的时间' + now) + if now == one_minutes_later: + print('时间到了') + start = time.clock() + print('提交订单开始时间', start) + chrome.find_element_by_xpath('//a[text()="确认"]').click() + break + # 方案一============================结束 + # 方案二===============开始 + if type == 2: + m = get_time_m() # 当前时间的分钟 + m1 = get_submit_time(m) # 计划提交时间的分钟 + print('销售订单计划提交时间的分钟', m1) + while True: + m2 = get_time_m() # 循环获取当前的分 + # sleep(30) + if (m2 == m1): + start = time.clock() + chrome.find_element_by_xpath('//a[text()="确认"]').click() + break + # 方案二===============结束 + while True: + try: + if chrome.find_element_by_xpath('//div[text()="提交成功"]').is_displayed() == True: + # print('订单完成了') + break + # else: + # print('共享任务创建成功的元素没有出现') + except: + continue + end = time.clock() + print(start, end) + # print('CPU执行时间: ', end - start) + return str(end - start) + +def create_salesorder(type=1): + try: + import time + pro_path = get_pro_path() + start = time.clock() + print('开始时间',start) + # caps = DesiredCapabilities().CHROME + # caps["pageLoadStrategy"] = "normal" # complete + # caps["pageLoadStrategy"] = "eager" # interactive + # caps["pageLoadStrategy"] = "none" + # chrome = webdriver.Chrome(desired_capabilities=caps) + opt = ChromeOptions() # 创建 Chrome 参数对象 + # opt.headless = True # 把 Chrome 设置成无界面模式,windows/Linux 皆可 + opt.headless = False # 把 Chrome 设置成无界面模式,windows/Linux 皆可 + opt.add_argument('--start-maximized') + opt.add_argument('--window-size=1280x1024') + # chrome = Chrome(options=opt) # 创建无界面对象 + # chrome = WebChrome(chrome_options=opt) + chrome = WebChrome(chrome_options=opt) + # chrome=webdriver.Chrome() + chrome.implicitly_wait(20) + chrome.get("http://10.17.65.200:8088/portal/") + # chrome.get("http://10.17.65.207:8088/uat/r/w") + sleep(2) + chrome.implicitly_wait(30) + # chrome.maximize_window() + chrome.find_element_by_id('input1').clear() + chrome.find_element_by_id('input1').send_keys('admin') + chrome.find_element_by_id('input2').clear() + chrome.find_element_by_id('input2').send_keys('Gyxc1234') + chrome.find_element_by_id('input2').send_keys(Keys.ENTER) + while True: + try: + if(chrome.find_element_by_xpath('//span[text()="退出"]').is_displayed()==True): + break + except: + continue + #切换所属公司 + chrome.find_element_by_class_name('changeCom').click() + sleep(1) + chrome.find_element_by_xpath('//span[text()="国药集团北京医疗器械有限公司"]/following-sibling::button').click() + sleep(1) + chrome.find_element_by_xpath('// button[text() = "确定"]').click() + sleep(1) + order_link = chrome.find_element_by_xpath('//span[text()="经销商要货申请"]') + chrome.execute_script("arguments[0].click();", order_link) + chrome.switch_to.frame(chrome.find_element_by_xpath('(//iframe[@class="metro-main-frame"])[2]')) + sleep(4) + chrome.find_element_by_xpath('//span[text()="新建"]').click() + sleep(4) + chrome.switch_to.frame(chrome.find_element_by_xpath('//iframe[contains(@name,"awsui-dialog-iframe")]')) + # 获取订单号 + + orderno = chrome.find_element_by_xpath('//div[text() = "要货申请单号 "]/following-sibling::div/span').text + print(orderno) + # chrome.switch_to.default_content() + sleep(4) + # while True: + # try: + # if chrome.find_element_by_xpath('//div[text()="订单公司名称 "]').is_displayed(): + # print(chrome.find_element_by_xpath('//div[text()="订单公司名称 "]').text) + # break + # except: + # continue + print(chrome.find_element_by_xpath('//div[text()="要货申请单号 "]').text) + + + sleep(2) + #客户名称 + chrome.find_element_by_xpath( + '//div[text()="客户名称 "]/following-sibling::div/div/div/div/div/div/div/div/span/span/i').click() + chrome.find_element_by_xpath('//input[@placeholder="模糊检索:客户编码,客户名称,收货地址,产品线名称,产品线编码"]').send_keys('北京大学') + chrome.find_element_by_xpath('//input[@placeholder="模糊检索:客户编码,客户名称,收货地址,产品线名称,产品线编码"]').send_keys(Keys.ENTER) + chrome.find_element_by_xpath('(//span[@class="el-radio__inner"])[1]').click() + + chrome.find_element_by_xpath('//span[@class="ensureBtn"]/button').click() + + #详细信息 + chrome.find_element_by_xpath('//div[text()="详细信息"]').click() + + chrome.find_element_by_xpath('//div[text()="合同/协议号 "]/following-sibling::div/div/div/div/div/div/div/div/span/span/i').click() + chrome.find_element_by_xpath('//input[@placeholder="模糊检索:合同协议号,合同号"]').send_keys('38443') + chrome.find_element_by_xpath('//input[@placeholder="模糊检索:合同协议号,合同号"]').send_keys(Keys.ENTER) + # chrome.find_element_by_xpath('//span/input[@type="radio" and @value="03105272b49986351ef7eb2930b5454de"]').click() + btn_div= chrome.find_element_by_xpath('//span/input[@type="radio" and @value="012001f8d35054875d6157d4715404319"]') + chrome.execute_script("arguments[0].click();", btn_div) + chrome.find_element_by_xpath('(//button[@class="el-button el-button--primary el-button--default"])[3]').click() + sleep(1) + + #业务员名称 + chrome.find_element_by_xpath( + '//div[text()="业务员名称 "]/following-sibling::div/div/div/div/div/div/div/div/span/span/i').click() + chrome.find_element_by_xpath('//input[@placeholder="模糊检索:业务员名称,业务员编码,业务部门名称,部门编码,部门类型编码"]').send_keys('chenshuheng') + chrome.find_element_by_xpath('//input[@placeholder="模糊检索:业务员名称,业务员编码,业务部门名称,部门编码,部门类型编码"]').send_keys(Keys.ENTER) + chrome.find_element_by_xpath('(//div[text()="chenshuheng"])[3]/ancestor-or-self::td/preceding-sibling::td/div/label/span/span').click() + chrome.find_element_by_xpath('(//span[@class="ensureBtn"]/button[1])[3]').click() + # #其他信息页签 + # chrome.find_element_by_xpath('//div[text()="其他信息"]').click() + # chrome.find_element_by_xpath('//div[@cid="AWSUI.SwitchButton"]//div/div/div/div/span[1]').click() + # 子表信息录入 + chrome.find_element_by_xpath('//div[text()="主体信息"]').click() + # 点击添加商品弹出添加商品子窗口 + for i in range(1): + chrome.find_element_by_xpath('//span[text()="添加商品"]').click() + add_goods('PTCA', chrome) + chrome.find_element_by_xpath('(//div[@class="el-dialog__body"]/div[2]/span/button[1]/span)[4]').click() + sleep(20) + # chrome.find_element_by_xpath('//span[text()="添加商品"]').click() + # chrome.find_element_by_xpath( + # '//input[@placeholder="模糊检索:商品编码,商品名称,规格型号,采购计量单位,销售计量单位,生产厂家编码"]').send_keys( + # '10006179') + # chrome.find_element_by_xpath( + # '//input[@placeholder="模糊检索:商品编码,商品名称,规格型号,采购计量单位,销售计量单位,生产厂家编码"]').send_keys( + # Keys.ENTER) + # sleep(1) + # chrome.find_element_by_xpath('(//span[@class="el-checkbox__inner"])[4]').click() + # chrome.find_element_by_xpath('(//div[@class="el-dialog__body"]/div[2]/span/button[1]/span)[4]').click() + while True: + try: + chrome.find_element_by_xpath('//div[@class="el-loading-spinner"]').is_displayed() + continue + except: + break + for i in range(1, 101): + sleep(2) + element=chrome.find_element_by_xpath('(//td[@colid="col_93"])[%s]'%i) + element.click() + sleep(2) + # element.send_keys("1") + # chrome.execute_script("document.getElementsByClassName('awsui-input-number-right')[0].value='1'") + chrome.find_element_by_class_name('awsui-input-number-right').send_keys('1') + # chrome.find_element_by_xpath('//td[@colid="col_177"]/div/div').send_keys('1') + sleep(2) + chrome.find_element_by_xpath('(//td[@colid="col_94"])[%s]'%i).click() + sleep(2) + chrome.execute_script( + "document.getElementsByClassName('vxe-table--body-wrapper body--wrapper')[0].scrollTop = %s*50;" % i) + # #滚动条右拉 + # # document.getElementsByClassName('vxe-table--footer-wrapper body--wrapper')[0].scrollLeft = 5000 + # chrome.execute_script("document.getElementsByClassName('vxe-table--footer-wrapper body--wrapper')[0].scrollLeft = 2000"); + # element = chrome.find_element_by_xpath('//td[@colid="col_197"]') + # element.click() + # sleep(2) + # chrome.execute_script("document.getElementsByClassName('awsui-input-number-right')[0].value='8'") + # sleep(2) + # element = chrome.find_element_by_xpath('//td[@colid="col_198"]') + # element.click() + # sleep(2) + # chrome.execute_script("document.getElementsByClassName('awsui-input-number-right')[0].value='8'") + # sleep(2) + # lock = threading.Lock() + # lock.acquire() + chrome.find_element_by_xpath('//span[text()="提交"]').click() + + while True: + try: + if chrome.find_element_by_xpath('//p[text()="共享任务创建成功"]').is_displayed()==True: + # print('订单完成了') + break + # else: + # print('共享任务创建成功的元素没有出现') + except: + continue + # lock.release() + # sleep(2) + # chrome.find_element_by_xpath('//button[@class="el-button el-button--primary el-button--mini awsui-button awsui-button--primary"]//span[text()="确定"]').click() + # chrome.switch_to.default_content() + # chrome.switch_to.frame(chrome.find_element_by_xpath('(//iframe[@class="metro-main-frame"])[2]')) + # sleep(20) + # while True: + # try: + # if chrome.find_element_by_xpath('//span[text()="%s"]' % orderno).is_displayed() == True: + # print('//span[text()="%s"]' % orderno) + # break + # except: + # continue + while True: + try: + # if chrome.find_element_by_xpath('(//span[text()="%s"])[2]'%orderno).is_displayed()==True: + if chrome.find_element_by_xpath( + '//span[text() = "1"]/ancestor-or-self::td/following-sibling::td/div/span').is_displayed() == True: + # print('aaaaaaaaaaaaaaaaaaaaaaaa', chrome.find_element_by_xpath( + # '//span[text() = "1"]/ancestor-or-self::td/following-sibling::td/div/span').text) + break + except: + continue + print('经销售要货申请单创建完成') + # 审批 + chrome.switch_to.default_content() + chrome.switch_to.frame(chrome.find_element_by_xpath('(//iframe[@class="metro-main-frame"])[2]')) + sleep(2) + chrome.find_element_by_xpath( + '//span[text() = "%s"]' % orderno).click() + chrome.switch_to.frame(chrome.find_element_by_xpath('//iframe[contains(@name,"awsui-dialog-iframe")]')) + + chrome.find_element_by_xpath('//span[text()="审核通过"]').click() + sleep(1) + chrome.find_element_by_xpath('//textarea[@placeholder="意见留言"]').send_keys('3333') + sleep(1) + chrome.find_element_by_xpath('//span[text()="发送"]').click() + while True: + try: + if chrome.find_element_by_xpath('//p[text()="共享任务创建成功"]').is_displayed() == True: + # print('订单完成了') + break + # else: + # print('共享任务创建成功的元素没有出现') + except: + continue + time1=match_goods(chrome, orderno,type) + # end = time.clock() + # print(start, end) + print('CPU执行时间: ', time1) + imgInfo = getErrorPhoto(chrome) + imgName = imgInfo[0] + image_path = imgInfo[1] + info=orderno+'执行耗时'+time1 + now = get_time() + writeFile_append(pro_path + '/logs/catalina.out', info) + send_email1(image_path, info) + except Exception as e: + print('出现异常') + # 将日志写入到文件中单独存储 + pro_path = get_pro_path() + traceback.print_exc() + imgInfo = getErrorPhoto(chrome) + imgName = imgInfo[0] + image_path = imgInfo[1] + print(imgName, image_path) + print(repr(e)) + info = repr(e) + now = get_time() + writeFile_append(pro_path + '/logs/logerror%s.txt' % now, info) + # send_email1(image_path, info) +if __name__ == "__main__": + # 创建多线程时, 需要制定该线程执行的任务.name线程名字 target目标函数名 + # t1 = threading.Thread(target=job,name="job1") + # t2 = threading.Thread(target=job,name="job2") + # t1.start() + # t2.start() + # opt = ChromeOptions() # 创建 Chrome 参数对象 + # # opt.headless = True # 把 Chrome 设置成无界面模式,windows/Linux 皆可 + # opt.headless = False # 把 Chrome 设置成无界面模式,windows/Linux 皆可 + # opt.add_argument('--start-maximized') + # opt.add_argument('--window-size=1280x1024') + # # chrome = Chrome(options=opt) # 创建无界面对象 + # chrome = WebChrome(chrome_options=opt) # airtest中的类 + + count=1 + for i in range(count): + t = threading.Thread(target=job) + t.start() + t.join() + +def start1(): + count = 1 + for i in range(count): + t = threading.Thread(target=job) + t.start() + t.join() + + # print(threading.active_count()) + # print("程序执行结束.....") + # create_salesorder() diff --git "a/testcase/od/\345\244\232\346\230\216\347\273\206/\350\260\203\346\213\250\345\207\272\345\272\223\345\215\225\345\244\232\346\230\216\347\273\206100.py" "b/testcase/od/\345\244\232\346\230\216\347\273\206/\350\260\203\346\213\250\345\207\272\345\272\223\345\215\225\345\244\232\346\230\216\347\273\206100.py" new file mode 100644 index 0000000000000000000000000000000000000000..1bec6bbc4f7807c1214b0afdeed291694c2fc276 --- /dev/null +++ "b/testcase/od/\345\244\232\346\230\216\347\273\206/\350\260\203\346\213\250\345\207\272\345\272\223\345\215\225\345\244\232\346\230\216\347\273\206100.py" @@ -0,0 +1,310 @@ +import datetime +import threading +import time +import traceback + +from airtest.core.api import * +from selenium import webdriver +from selenium.webdriver import DesiredCapabilities +from selenium.webdriver.common.keys import Keys +from airtest_selenium.proxy import * +from selenium.webdriver import Chrome, ChromeOptions +from airtest.core.api import * +from airtest_selenium.proxy import * + +from mail1 import send_email1 +from public.tools import * + + + + +# chrome = webdriver.Chrome(chrome_options=opt) + +def job(): + print("这是一个需要执行的任务。。。。。") + create_salesorder1(1) + print("当前线程的个数:", threading.active_count()) + time.sleep(1) + print("当前线程的信息:", threading.current_thread()) +def add_goods(goodsname,chrome): + chrome.find_element_by_xpath( + '//input[@placeholder="模糊检索:商品编码,商品全称,规格型号,主计量单位,采购计量单位,厂家物料编码,存储条件,存储条件说明,生产企业编码,行类型,件包数,产品备注,产品描述,商品性质,是否免备案"]').send_keys( + goodsname) + chrome.find_element_by_xpath( + '//input[@placeholder="模糊检索:商品编码,商品全称,规格型号,主计量单位,采购计量单位,厂家物料编码,存储条件,存储条件说明,生产企业编码,行类型,件包数,产品备注,产品描述,商品性质,是否免备案"]').send_keys( + Keys.ENTER) + #获取页数 + # pagecount=chrome.find_element_by_xpath('(// li[ @class ="number"])[16]').text + pagecount=10 + for i in range(int(pagecount)): + sleep(1) + chrome.find_element_by_xpath( + '//th[@class="el-table_18_column_144 multiple-column el-table-column--selection is-leaf headerCellClassName el-table__cell"]/div/label/span/span').click() + #翻页 + chrome.find_element_by_xpath('(//button[@class="btn-next is-last"])[6]').click() + sleep(2) + + +def create_salesorder1(type=1): + import time + start = time.clock() + # caps = DesiredCapabilities().CHROME + # caps["pageLoadStrategy"] = "normal" # complete + # caps["pageLoadStrategy"] = "eager" # interactive + # caps["pageLoadStrategy"] = "none" + # chrome = webdriver.Chrome(desired_capabilities=caps) + opt = ChromeOptions() # 创建 Chrome 参数对象 + # opt.headless = True # 把 Chrome 设置成无界面模式,windows/Linux 皆可 + opt.headless = False # 把 Chrome 设置成无界面模式,windows/Linux 皆可 + opt.add_argument('--start-maximized') + opt.add_argument('--window-size=1280x1024') + # chrome = Chrome(options=opt) # 创建无界面对象 + # chrome = WebChrome(chrome_options=opt) + chrome = WebChrome(chrome_options=opt) + # chrome=webdriver.Chrome() + chrome.implicitly_wait(20) + chrome.get("http://10.17.65.200:8088/portal/") + # chrome.get("http://10.17.65.207:8088/uat/r/w") + sleep(2) + chrome.implicitly_wait(30) + # chrome.maximize_window() + chrome.find_element_by_id('input1').clear() + chrome.find_element_by_id('input1').send_keys('admin') + chrome.find_element_by_id('input2').clear() + chrome.find_element_by_id('input2').send_keys('Gyxc1234') + chrome.find_element_by_id('input2').send_keys(Keys.ENTER) + while True: + try: + if(chrome.find_element_by_xpath('//span[text()="退出"]').is_displayed()==True): + break + except: + continue + # 切换所属公司 + chrome.find_element_by_class_name('changeCom').click() + sleep(1) + chrome.find_element_by_xpath('//span[text()="国药集团北京医疗器械有限公司"]/following-sibling::button').click() + sleep(1) + chrome.find_element_by_xpath('// button[text() = "确定"]').click() + sleep(1) + allot_link = chrome.find_element_by_xpath('//span[text()="调拨出库单"]') + chrome.execute_script("arguments[0].click();", allot_link) + chrome.switch_to.frame(chrome.find_element_by_xpath('(//iframe[@class="metro-main-frame"])[2]')) + sleep(4) + chrome.find_element_by_xpath('//span[text()="新建"]').click() + sleep(4) + chrome.switch_to.frame(chrome.find_element_by_xpath('//iframe[contains(@name,"awsui-dialog-iframe")]')) + #获取调拨出库单号 + + orderno=chrome.find_element_by_xpath('//div[text() = "调拨出库订单号 "]/following-sibling::div/span').text + print(orderno) + # chrome.switch_to.default_content() + sleep(4) + # while True: + # try: + # if chrome.find_element_by_xpath('//div[text()="订单公司名称 "]').is_displayed(): + # print(chrome.find_element_by_xpath('//div[text()="订单公司名称 "]').text) + # break + # except: + # continue + print(chrome.find_element_by_xpath('//div[text()="公司名称 "]').text) + + + sleep(2) + chrome.find_element_by_xpath( + '//div[text()="公司名称 "]/following-sibling::div/div/div/div/div/div/div/div/span/span/i').click() + chrome.find_element_by_xpath('//input[@placeholder="模糊检索:公司名称,公司编码"]').send_keys('国药集团北京') + chrome.find_element_by_xpath('//input[@placeholder="模糊检索:公司名称,公司编码"]').send_keys(Keys.ENTER) + sleep(2) + chrome.find_element_by_xpath('(//span[@class="el-radio__inner"])[1]').click() + + chrome.find_element_by_xpath('//span[@class="ensureBtn"]/button').click() + chrome.find_element_by_xpath('//button[@class="el-button el-button--primary el-button--mini"]').click() + + # chrome.find_element_by_xpath('//div[text()="出库仓库 "]/following-sibling::div/div/div/div/div/div/div/div/span/span/i').click() + # chrome.find_element_by_xpath('//input[@placeholder="模糊检索:仓库编码,仓库名称,是否传WMS,所属公司名称"]').send_keys('北京强生非') + # chrome.find_element_by_xpath('//input[@placeholder="模糊检索:仓库编码,仓库名称,是否传WMS,所属公司名称"]').send_keys(Keys.ENTER) + # # chrome.find_element_by_xpath('//span/input[@type="radio" and @value="03105272b49986351ef7eb2930b5454de"]').click() + # btn_div= chrome.find_element_by_xpath('//span/input[@type="radio" and @value="03105272b49986351ef7eb2930b5454de"]') + # chrome.execute_script("arguments[0].click();", btn_div) + # chrome.find_element_by_xpath('(//button[@class="el-button el-button--primary el-button--default"])[3]').click() + # chrome.find_element_by_xpath('//div[text()="客户及合同信息"]').click() + # chrome.find_element_by_xpath( + # '//div[text()="合同号 "]/following-sibling::div/div/div/div/div/div/div/div/span/span/i').click() + # chrome.find_element_by_xpath('//input[@placeholder="模糊检索:合同号,合同协议号,对方编码,项目名称,项目编码,业态编码,参考部门,参考部门编码,参考业务员,参考业务员编码,产品线名称,产品线编码,合同类型,合同属性"]').send_keys('38443') + # chrome.find_element_by_xpath('//input[@placeholder="模糊检索:合同号,合同协议号,对方编码,项目名称,项目编码,业态编码,参考部门,参考部门编码,参考业务员,参考业务员编码,产品线名称,产品线编码,合同类型,合同属性"]').send_keys(Keys.ENTER) + # chrome.find_element_by_xpath('//div[@class="multiple-header string_col" and text()="38443"]/ancestor-or-self::td/preceding-sibling::td/div/label/span/span').click() + # chrome.find_element_by_xpath('(//button[@class="el-button el-button--primary el-button--default"])[4]').click() + #业务员名称 + sleep(1) + chrome.find_element_by_xpath( + '//div[text()="业务员 "]/following-sibling::div/div/div/div/div/div/div/div/span/span/i').click() + chrome.find_element_by_xpath('//input[@placeholder="模糊检索:业务员名称,业务员编码,部门名称,部门编码,部门类型"]').send_keys('杨春刚') + chrome.find_element_by_xpath('//input[@placeholder="模糊检索:业务员名称,业务员编码,部门名称,部门编码,部门类型"]').send_keys(Keys.ENTER) + chrome.find_element_by_xpath('(//div[text()="杨春刚"])[3]/ancestor-or-self::td/preceding-sibling::td/div/label/span/span').click() + chrome.find_element_by_xpath('(//span[@class="ensureBtn"]/button[1])[2]').click() + #仓库信息页签 + chrome.find_element_by_xpath('//div[text()="仓库信息"]').click() + #调拨出库仓库名称 + chrome.find_element_by_xpath( + '//div[text()="调拨出库仓库名称 "]/following-sibling::div/div/div/div/div/div/div/div/span/span/i').click() + chrome.find_element_by_xpath('//input[@placeholder="模糊检索:调拨出库仓库名称,调拨出库仓库编码,是否WMS仓"]').send_keys('北京强生非') + chrome.find_element_by_xpath('//input[@placeholder="模糊检索:调拨出库仓库名称,调拨出库仓库编码,是否WMS仓"]').send_keys(Keys.ENTER) + # chrome.find_element_by_xpath('//span/input[@type="radio" and @value="03105272b49986351ef7eb2930b5454de"]').click() + btn_div= chrome.find_element_by_xpath('//span/input[@type="radio" and @value="08374712eb9413253c6281062de2ab877"]') + chrome.execute_script("arguments[0].click();", btn_div) + chrome.find_element_by_xpath('(//span[@class="ensureBtn"])[3]/button').click() + #调拨入库仓库名称 + chrome.find_element_by_xpath( + '//div[text()="调拨入库仓库名称 "]/following-sibling::div/div/div/div/div/div/div/div/span/span/i').click() + chrome.find_element_by_xpath('//input[@placeholder="模糊检索:调拨入库仓库名称,调拨入库仓库编码,是否WMS"]').send_keys('北京公司-宁波仓') + chrome.find_element_by_xpath('//input[@placeholder="模糊检索:调拨入库仓库名称,调拨入库仓库编码,是否WMS"]').send_keys(Keys.ENTER) + # chrome.find_element_by_xpath('//span/input[@type="radio" and @value="03105272b49986351ef7eb2930b5454de"]').click() + btn_div = chrome.find_element_by_xpath('//span/input[@type="radio" and @value="0e455e227177d35f275908320e3e32fe9"]') + chrome.execute_script("arguments[0].click();", btn_div) + chrome.find_element_by_xpath('(//span[@class="ensureBtn"])[4]/button').click() + + # 子表信息录入 + chrome.find_element_by_xpath('//div[text()="主体信息"]').click() + # chrome.find_element_by_xpath('//span[text()="添加商品"]').click() + # 点击添加商品弹出添加商品子窗口 + for i in range(1): + chrome.find_element_by_xpath('//span[text()="添加商品"]').click() + add_goods('PTCA',chrome) + chrome.find_element_by_xpath('(//div[@class="el-dialog__body"]/div[2]/span/button[1]/span)[5]').click() + sleep(10) + + # chrome.find_element_by_xpath( + # '//input[@placeholder="模糊检索:商品编码,商品全称,规格型号,主计量单位,采购计量单位,厂家物料编码,存储条件,存储条件说明,生产企业编码,行类型,件包数,产品备注,产品描述,商品性质,是否免备案"]').send_keys( + # '10006179') + # chrome.find_element_by_xpath( + # '//input[@placeholder="模糊检索:商品编码,商品全称,规格型号,主计量单位,采购计量单位,厂家物料编码,存储条件,存储条件说明,生产企业编码,行类型,件包数,产品备注,产品描述,商品性质,是否免备案"]').send_keys( + # Keys.ENTER) + # sleep(1) + # chrome.find_element_by_xpath('(//span[@class="el-checkbox__inner"])[4]').click() + # chrome.find_element_by_xpath('(//div[@class="el-dialog__body"]/div[2]/span/button[1]/span)[5]').click() + sleep(6) + for i in range(1, 101): + element=chrome.find_element_by_xpath('(//td[@colid="col_108"])[%s]'%i) + element.click() + sleep(2) + # element.send_keys("1") + # chrome.execute_script("document.getElementsByClassName('awsui-input-number-right')[0].value='1'") + chrome.find_element_by_class_name('awsui-input-number-right').send_keys('1') + sleep(2) + #滚动条右拉 + # document.getElementsByClassName('vxe-table--footer-wrapper body--wrapper')[0].scrollLeft = 5000 + chrome.execute_script("document.getElementsByClassName('vxe-table--footer-wrapper body--wrapper')[0].scrollLeft = 2000"); + # element = chrome.find_element_by_xpath('//td[@colid="col_197"]') + # element.click() + # sleep(6) + # chrome.execute_script("document.getElementsByClassName('awsui-input-number-right')[0].value='8'") + # sleep(2) + # element = chrome.find_element_by_xpath('//td[@colid="col_198"]') + # element.click() + # sleep(6) + # chrome.execute_script("document.getElementsByClassName('awsui-input-number-right')[0].value='8'") + # sleep(2) + # lock = threading.Lock() + # lock.acquire() + #方案一============================开始 + if type==1: + import datetime + now = datetime.datetime.now() + one_minutes_later = now + datetime.timedelta(minutes=1) + now = now.strftime('%Y-%m-%d %H:%M') + one_minutes_later = one_minutes_later.strftime('%Y-%m-%d %H:%M') + # print('bbbbbbbb'+one_minutes_later) + while True: + now = datetime.datetime.now().strftime('%Y-%m-%d %H:%M') + # print('变化的时间' + now) + if now == one_minutes_later: + print('时间到了') + start = time.clock() + chrome.find_element_by_xpath('//span[text()="提交"]').click() + break + # 方案一============================结束 + #方案二===============开始 + if type==2: + m=get_time_m() #当前时间的分钟 + m1=get_submit_time(m)#计划提交时间的分钟 + print('调拨计划提交时间',m1) + while True: + m2=get_time_m() #循环获取当前的分 + # sleep(30) + if (m2==m1): + start = time.clock() + chrome.find_element_by_xpath('//span[text()="提交"]').click() + break + #方案二===============结束 + while True: + try: + if chrome.find_element_by_xpath('//p[text()="共享任务创建成功"]').is_displayed() == True: + # print('订单完成了') + break + except: + continue + # lock.release() + # sleep(5) + # chrome.find_element_by_xpath('//button[@class="el-button el-button--primary el-button--mini awsui-button awsui-button--primary"]//span[text()="确定"]').click() + chrome.switch_to.default_content() + chrome.switch_to.frame(chrome.find_element_by_xpath('(//iframe[@class="metro-main-frame"])[2]')) + # sleep(20) + while True: + try: + if chrome.find_element_by_xpath('(//span[text()="%s"])[2]'%orderno).is_displayed()==True: + print('//span[text()="%s"]'%orderno) + break + except: + continue + print('调拨出库单创建完成') + end = time.clock() + print(start, end) + print('CPU执行时间: ', end - start) + time1=end - start + imgInfo = getErrorPhoto(chrome) + imgName = imgInfo[0] + image_path = imgInfo[1] + info=orderno+',耗时'+str(time1) + now = get_time() + pro_path = get_pro_path() + writeFile_append(pro_path + '/logs/catalina.out', info) + send_email1(image_path, info) +if __name__ == "__main__": + # 创建多线程时, 需要制定该线程执行的任务.name线程名字 target目标函数名 + # t1 = threading.Thread(target=job,name="job1") + # t2 = threading.Thread(target=job,name="job2") + # t1.start() + # t2.start() + # opt = ChromeOptions() # 创建 Chrome 参数对象 + # # opt.headless = True # 把 Chrome 设置成无界面模式,windows/Linux 皆可 + # opt.headless = False # 把 Chrome 设置成无界面模式,windows/Linux 皆可 + # opt.add_argument('--start-maximized') + # opt.add_argument('--window-size=1280x1024') + # # chrome = Chrome(options=opt) # 创建无界面对象 + # chrome = WebChrome(chrome_options=opt) # airtest中的类 + pro_path = get_pro_path() + + try: + for i in range(1): + t = threading.Thread(target=job) + t.start() + # t.join() + except Exception as e: + print('出现异常') + # 将日志写入到文件中单独存储 + pro_path = get_pro_path() + traceback.print_exc() + # imgInfo = getErrorPhoto(chrome) + # imgName = imgInfo[0] + # image_path = imgInfo[1] + # print(imgName, image_path) + print(repr(e)) + info = repr(e) + now = get_time() + writeFile_append(pro_path + '/logs/logerror%s.txt' % now, info) + # send_email1(image_path, info) + + + # print(threading.active_count()) + # print("程序执行结束.....") + # create_salesorder() diff --git "a/testcase/od/\345\244\232\346\230\216\347\273\206/\351\224\200\345\224\256\350\256\242\345\215\225_\345\244\232\346\230\216\347\273\206.py" "b/testcase/od/\345\244\232\346\230\216\347\273\206/\351\224\200\345\224\256\350\256\242\345\215\225_\345\244\232\346\230\216\347\273\206.py" new file mode 100644 index 0000000000000000000000000000000000000000..e0e52f2a792c8eca7a3fd5106e8238b22f240a8e --- /dev/null +++ "b/testcase/od/\345\244\232\346\230\216\347\273\206/\351\224\200\345\224\256\350\256\242\345\215\225_\345\244\232\346\230\216\347\273\206.py" @@ -0,0 +1,271 @@ +import datetime +import threading +import time +import traceback + +from airtest.core.api import * +from selenium import webdriver +from selenium.webdriver import DesiredCapabilities +from selenium.webdriver.common.keys import Keys +from airtest_selenium.proxy import * +from selenium.webdriver import Chrome, ChromeOptions +from airtest.core.api import * +from airtest_selenium.proxy import * + +from mail1 import send_email1 +from public.tools import * + + + + +# chrome = webdriver.Chrome(chrome_options=opt) + +def job(): + print("这是一个需要执行的任务。。。。。") + create_salesorder() + print("当前线程的个数:", threading.active_count()) + time.sleep(1) + print("当前线程的信息:", threading.current_thread()) + + +def create_salesorder(type=1): + try: + import time + pro_path = get_pro_path() + start = time.clock() + # caps = DesiredCapabilities().CHROME + # caps["pageLoadStrategy"] = "normal" # complete + # caps["pageLoadStrategy"] = "eager" # interactive + # caps["pageLoadStrategy"] = "none" + # chrome = webdriver.Chrome(desired_capabilities=caps) + opt = ChromeOptions() # 创建 Chrome 参数对象 + # opt.headless = True # 把 Chrome 设置成无界面模式,windows/Linux 皆可 + opt.headless = False # 把 Chrome 设置成无界面模式,windows/Linux 皆可 + opt.add_argument('--start-maximized') + opt.add_argument('--window-size=1280x1024') + # chrome = Chrome(options=opt) # 创建无界面对象 + # chrome = WebChrome(chrome_options=opt) + chrome = WebChrome(chrome_options=opt) + # chrome=webdriver.Chrome() + chrome.implicitly_wait(20) + chrome.get("http://10.17.65.200:8088/portal/") + # chrome.get("http://10.17.65.207:8088/uat/r/w") + sleep(2) + chrome.implicitly_wait(30) + # chrome.maximize_window() + chrome.find_element_by_id('input1').clear() + chrome.find_element_by_id('input1').send_keys('admin') + chrome.find_element_by_id('input2').clear() + chrome.find_element_by_id('input2').send_keys('Gyxc1234') + chrome.find_element_by_id('input2').send_keys(Keys.ENTER) + while True: + try: + if(chrome.find_element_by_xpath('//span[text()="退出"]').is_displayed()==True): + break + except: + continue + #切换所属公司 + chrome.find_element_by_class_name('changeCom').click() + sleep(1) + chrome.find_element_by_xpath('//span[text()="国药集团北京医疗器械有限公司"]/following-sibling::button').click() + sleep(1) + chrome.find_element_by_xpath('// button[text() = "确定"]').click() + sleep(1) + # chrome.find_element_by_xpath('//div[text()="销售管理"]').click() + # actions = ActionChains(chrome) + # actions.move_to_element(chrome.find_element_by_xpath('//div[text()="销售业务"]')).perform() + # chrome.find_element_by_xpath('//span[text()="销售订单"]').click() + order_link = chrome.find_element_by_xpath('//span[text()="销售订单"]') + chrome.execute_script("arguments[0].click();", order_link) + chrome.switch_to.frame(chrome.find_element_by_xpath('(//iframe[@class="metro-main-frame"])[2]')) + sleep(4) + chrome.find_element_by_xpath('//span[text()="新建"]').click() + sleep(4) + chrome.switch_to.frame(chrome.find_element_by_xpath('//iframe[contains(@name,"awsui-dialog-iframe")]')) + #获取订单号 + + orderno=chrome.find_element_by_xpath('//div[text() = "销售订单号 "]/following-sibling::div/span').text + print(orderno) + # chrome.switch_to.default_content() + sleep(4) + # while True: + # try: + # if chrome.find_element_by_xpath('//div[text()="订单公司名称 "]').is_displayed(): + # print(chrome.find_element_by_xpath('//div[text()="订单公司名称 "]').text) + # break + # except: + # continue + print(chrome.find_element_by_xpath('//div[text()="订单公司名称 "]').text) + + + sleep(2) + chrome.find_element_by_xpath( + '//div[text()="订单公司名称 "]/following-sibling::div/div/div/div/div/div/div/div/span/span/i').click() + chrome.find_element_by_xpath('//input[@placeholder="模糊检索:公司名称,公司编码"]').send_keys('国药集团北京') + chrome.find_element_by_xpath('//input[@placeholder="模糊检索:公司名称,公司编码"]').send_keys(Keys.ENTER) + chrome.find_element_by_xpath('(//span[@class="el-radio__inner"])[1]').click() + + chrome.find_element_by_xpath('//span[@class="ensureBtn"]/button').click() + chrome.find_element_by_xpath('//button[@class="el-button el-button--primary el-button--mini"]').click() + chrome.find_element_by_xpath('//div[text()="出库仓库 "]/following-sibling::div/div/div/div/div/div/div/div/span/span/i').click() + chrome.find_element_by_xpath('//input[@placeholder="模糊检索:仓库编码,仓库名称,是否传WMS,所属公司名称"]').send_keys('北京强生非') + chrome.find_element_by_xpath('//input[@placeholder="模糊检索:仓库编码,仓库名称,是否传WMS,所属公司名称"]').send_keys(Keys.ENTER) + # chrome.find_element_by_xpath('//span/input[@type="radio" and @value="03105272b49986351ef7eb2930b5454de"]').click() + btn_div= chrome.find_element_by_xpath('//span/input[@type="radio" and @value="03105272b49986351ef7eb2930b5454de"]') + chrome.execute_script("arguments[0].click();", btn_div) + chrome.find_element_by_xpath('(//button[@class="el-button el-button--primary el-button--default"])[3]').click() + sleep(1) + chrome.find_element_by_xpath('//div[text()="客户及合同信息"]').click() + chrome.find_element_by_xpath( + '//div[text()="合同号 "]/following-sibling::div/div/div/div/div/div/div/div/span/span/i').click() + chrome.find_element_by_xpath('//input[@placeholder="模糊检索:合同号,合同协议号,对方编码,项目名称,项目编码,业态编码,参考部门,参考部门编码,参考业务员,参考业务员编码,产品线名称,产品线编码,合同类型,合同属性"]').send_keys('38443') + chrome.find_element_by_xpath('//input[@placeholder="模糊检索:合同号,合同协议号,对方编码,项目名称,项目编码,业态编码,参考部门,参考部门编码,参考业务员,参考业务员编码,产品线名称,产品线编码,合同类型,合同属性"]').send_keys(Keys.ENTER) + chrome.find_element_by_xpath('//div[@class="multiple-header string_col" and text()="38443"]/ancestor-or-self::td/preceding-sibling::td/div/label/span/span').click() + chrome.find_element_by_xpath('(//button[@class="el-button el-button--primary el-button--default"])[4]').click() + #业务员名称 + chrome.find_element_by_xpath( + '//div[text()="业务员名称 "]/following-sibling::div/div/div/div/div/div/div/div/span/span/i').click() + chrome.find_element_by_xpath('//input[@placeholder="模糊检索:业务员名称,业务员编码,业务部门名称,业务部门编码,部门类型编码"]').send_keys('杨春刚') + chrome.find_element_by_xpath('//input[@placeholder="模糊检索:业务员名称,业务员编码,业务部门名称,业务部门编码,部门类型编码"]').send_keys(Keys.ENTER) + chrome.find_element_by_xpath('(//div[text()="杨春刚"])[3]/ancestor-or-self::td/preceding-sibling::td/div/label/span/span').click() + chrome.find_element_by_xpath('(//span[@class="ensureBtn"]/button[1])[4]').click() + #其他信息页签 + chrome.find_element_by_xpath('//div[text()="其他信息"]').click() + chrome.find_element_by_xpath('//div[@cid="AWSUI.SwitchButton"]//div/div/div/div/span[1]').click() + # 子表信息录入 + chrome.find_element_by_xpath('//div[text()="主体信息"]').click() + chrome.find_element_by_xpath('//span[text()="添加商品"]').click() + chrome.find_element_by_xpath( + '//input[@placeholder="模糊检索:商品编码,商品名称,规格型号,主计量单位,销售计量单位,厂家物料编码,存储条件说明,生产企业编码,供应商编码,行类型,商品性质,批发价,进口/国产/港澳台,件包数,产品备注,是否免备案,产品描述"]').send_keys( + 'PTCA') + chrome.find_element_by_xpath( + '//input[@placeholder="模糊检索:商品编码,商品名称,规格型号,主计量单位,销售计量单位,厂家物料编码,存储条件说明,生产企业编码,供应商编码,行类型,商品性质,批发价,进口/国产/港澳台,件包数,产品备注,是否免备案,产品描述"]').send_keys( + Keys.ENTER) + sleep(1) + chrome.find_element_by_xpath('//th[@class="el-table_18_column_229 multiple-column el-table-column--selection is-leaf headerCellClassName el-table__cell"]/div/label/span/span').click() + chrome.find_element_by_xpath('(//div[@class="el-dialog__body"]/div[2]/span/button[1]/span)[5]').click() + sleep(2) + for i in range(1,11): + element=chrome.find_element_by_xpath('(//td[@colid="col_177"])[%s]'%i) + element.click() + sleep(2) + # element.send_keys("1") + # chrome.execute_script("document.getElementsByClassName('awsui-input-number-right')[0].value='1'") + chrome.find_element_by_class_name('awsui-input-number-right').send_keys('1') + # chrome.find_element_by_xpath('//td[@colid="col_177"]/div/div').send_keys('1') + sleep(1) + chrome.find_element_by_xpath('(//td[@colid="col_178"])[%s]'%i).click() + sleep(2) + + #滚动条右拉 + # document.getElementsByClassName('vxe-table--footer-wrapper body--wrapper')[0].scrollLeft = 5000 + chrome.execute_script("document.getElementsByClassName('vxe-table--footer-wrapper body--wrapper')[0].scrollLeft = 2000"); + for i in range(1, 11): + element = chrome.find_element_by_xpath('(//td[@colid="col_197"])[%s]'%i) + element.click() + sleep(2) + chrome.execute_script("document.getElementsByClassName('awsui-input-number-right')[0].value='8'") + sleep(2) + element = chrome.find_element_by_xpath('(//td[@colid="col_198"])[%s]'%i) + element.click() + sleep(2) + chrome.execute_script("document.getElementsByClassName('awsui-input-number-right')[0].value='8'") + sleep(2) + # lock = threading.Lock() + # lock.acquire() + #方案一============================开始 + if type==1: + import datetime + now = datetime.datetime.now() + one_minutes_later = now + datetime.timedelta(minutes=1) + now = now.strftime('%Y-%m-%d %H:%M') + one_minutes_later = one_minutes_later.strftime('%Y-%m-%d %H:%M') + # print('bbbbbbbb'+one_minutes_later) + while True: + now = datetime.datetime.now().strftime('%Y-%m-%d %H:%M') + # print('变化的时间' + now) + if now == one_minutes_later: + print('时间到了') + chrome.find_element_by_xpath('//span[text()="提交"]').click() + break + # 方案一============================结束 + #方案二===============开始 + if type==2: + m=get_time_m() #当前时间的分钟 + m1=get_submit_time(m)#计划提交时间的分钟 + print('销售订单计划提交时间的分钟',m1) + while True: + m2=get_time_m() #循环获取当前的分 + # sleep(30) + if (m2==m1): + chrome.find_element_by_xpath('//span[text()="提交"]').click() + break + #方案二===============结束 + # lock.release() + sleep(2) + # chrome.find_element_by_xpath('//button[@class="el-button el-button--primary el-button--mini awsui-button awsui-button--primary"]//span[text()="确定"]').click() + # chrome.switch_to.default_content() + # chrome.switch_to.frame(chrome.find_element_by_xpath('(//iframe[@class="metro-main-frame"])[2]')) + # sleep(20) + while True: + try: + if chrome.find_element_by_xpath('//span[text()="%s"]'%orderno).is_displayed()==True: + print('//span[text()="%s"]'%orderno) + break + except: + continue + print('销售订单创建完成') + end = time.clock() + print(start, end) + print('CPU执行时间: ', end - start) + imgInfo = getErrorPhoto(chrome) + imgName = imgInfo[0] + image_path = imgInfo[1] + info=orderno+'执行耗时'+str(end - start) + now = get_time() + writeFile_append(pro_path + '/logs/catalina.out', info) + send_email1(image_path, info) + except Exception as e: + print('出现异常') + # 将日志写入到文件中单独存储 + pro_path = get_pro_path() + traceback.print_exc() + imgInfo = getErrorPhoto(chrome) + imgName = imgInfo[0] + image_path = imgInfo[1] + print(imgName, image_path) + print(repr(e)) + info = repr(e) + now = get_time() + writeFile_append(pro_path + '/logs/logerror%s.txt' % now, info) + # send_email1(image_path, info) +if __name__ == "__main__": + # 创建多线程时, 需要制定该线程执行的任务.name线程名字 target目标函数名 + # t1 = threading.Thread(target=job,name="job1") + # t2 = threading.Thread(target=job,name="job2") + # t1.start() + # t2.start() + # opt = ChromeOptions() # 创建 Chrome 参数对象 + # # opt.headless = True # 把 Chrome 设置成无界面模式,windows/Linux 皆可 + # opt.headless = False # 把 Chrome 设置成无界面模式,windows/Linux 皆可 + # opt.add_argument('--start-maximized') + # opt.add_argument('--window-size=1280x1024') + # # chrome = Chrome(options=opt) # 创建无界面对象 + # chrome = WebChrome(chrome_options=opt) # airtest中的类 + + count=1 + for i in range(count): + t = threading.Thread(target=job) + t.start() + t.join() + +def start1(): + count = 1 + for i in range(count): + t = threading.Thread(target=job) + t.start() + t.join() + + # print(threading.active_count()) + # print("程序执行结束.....") + # create_salesorder() diff --git "a/testcase/od/\345\244\232\346\230\216\347\273\206/\351\224\200\345\224\256\350\256\242\345\215\225_\345\244\232\346\230\216\347\273\206100.py" "b/testcase/od/\345\244\232\346\230\216\347\273\206/\351\224\200\345\224\256\350\256\242\345\215\225_\345\244\232\346\230\216\347\273\206100.py" new file mode 100644 index 0000000000000000000000000000000000000000..1596264204373ccbac55d66f141a8497fdee690a --- /dev/null +++ "b/testcase/od/\345\244\232\346\230\216\347\273\206/\351\224\200\345\224\256\350\256\242\345\215\225_\345\244\232\346\230\216\347\273\206100.py" @@ -0,0 +1,422 @@ + + +import datetime +import threading +import time +import traceback + +from airtest.core.api import * +from selenium import webdriver +from selenium.webdriver import DesiredCapabilities +from selenium.webdriver.common.keys import Keys +from airtest_selenium.proxy import * +from selenium.webdriver import Chrome, ChromeOptions +from airtest.core.api import * +from airtest_selenium.proxy import * + +from public.mail1 import send_email1 +from public.tools import * + + + + +# chrome = webdriver.Chrome(chrome_options=opt) + +def job(type=2): + print("这是一个需要执行的任务。。。。。") + create_salesorder(type) + print("当前线程的个数:", threading.active_count()) + time.sleep(1) + print("当前线程的信息:", threading.current_thread()) +def add_goods(goodsname,chrome): + sleep(4) + chrome.find_element_by_xpath( + '//input[@placeholder="模糊检索:商品编码,商品名称,规格型号,主计量单位,销售计量单位,厂家物料编码,存储条件说明,生产企业编码,供应商编码,行类型,商品性质,批发价,进口/国产/港澳台,件包数,产品备注,是否免备案,产品描述"]').send_keys( + goodsname) + sleep(2) + chrome.find_element_by_xpath( + '//input[@placeholder="模糊检索:商品编码,商品名称,规格型号,主计量单位,销售计量单位,厂家物料编码,存储条件说明,生产企业编码,供应商编码,行类型,商品性质,批发价,进口/国产/港澳台,件包数,产品备注,是否免备案,产品描述"]').send_keys( + Keys.ENTER) + sleep(2) + #获取页数 + # pagecount=chrome.find_element_by_xpath('(// li[ @class ="number"])[16]').text + pagecount=10 + for i in range(int(pagecount)): + # chrome.find_element_by_xpath('//span[text()="添加商品"]').click() + # chrome.find_element_by_xpath( + # '//input[@placeholder="模糊检索:商品编码,商品名称,规格型号,主计量单位,销售计量单位,厂家物料编码,存储条件说明,生产企业编码,供应商编码,行类型,商品性质,批发价,进口/国产/港澳台,件包数,产品备注,是否免备案,产品描述"]').send_keys( + # goodsname) + # chrome.find_element_by_xpath( + # '//input[@placeholder="模糊检索:商品编码,商品名称,规格型号,主计量单位,销售计量单位,厂家物料编码,存储条件说明,生产企业编码,供应商编码,行类型,商品性质,批发价,进口/国产/港澳台,件包数,产品备注,是否免备案,产品描述"]').send_keys( + # Keys.ENTER) + sleep(1) + chrome.find_element_by_xpath( + '//th[@class="el-table_18_column_269 multiple-column el-table-column--selection is-leaf headerCellClassName el-table__cell"]/div/label/span/span').click() + #翻页 + sleep(2) + chrome.find_element_by_xpath('(//button[@class="btn-next is-last"])[6]').click() + + #点击确定 + # chrome.find_element_by_xpath('(//div[@class="el-dialog__body"]/div[2]/span/button[1]/span)[5]').click() + sleep(2) +def create_salesorder(type=1): + import time + pro_path = get_pro_path() + start = time.clock() + print('订单开始时间', start) + # caps = DesiredCapabilities().CHROME + # caps["pageLoadStrategy"] = "normal" # complete + # caps["pageLoadStrategy"] = "eager" # interactive + # caps["pageLoadStrategy"] = "none" + # chrome = webdriver.Chrome(desired_capabilities=caps) + opt = ChromeOptions() # 创建 Chrome 参数对象 + # opt.headless = True # 把 Chrome 设置成无界面模式,windows/Linux 皆可 + opt.headless = False # 把 Chrome 设置成无界面模式,windows/Linux 皆可 + opt.add_argument('--start-maximized') + opt.add_argument('--window-size=1280x1024') + # chrome = Chrome(options=opt) # 创建无界面对象 + # chrome = WebChrome(chrome_options=opt) + # chrome = WebChrome(chrome_options=opt) + chrome=webdriver.Chrome(chrome_options=opt) + try: + + chrome.implicitly_wait(20) + chrome.get("http://10.17.65.200:8088/portal/") + # chrome.get("http://10.17.65.207:8088/uat/r/w") + sleep(2) + chrome.implicitly_wait(30) + # chrome.maximize_window() + chrome.find_element_by_id('input1').clear() + chrome.find_element_by_id('input1').send_keys('admin') + chrome.find_element_by_id('input2').clear() + chrome.find_element_by_id('input2').send_keys('Gyxc1234') + chrome.find_element_by_id('input2').send_keys(Keys.ENTER) + while True: + try: + if(chrome.find_element_by_xpath('//span[text()="退出"]').is_displayed()==True): + break + except: + continue + #切换所属公司 + chrome.find_element_by_class_name('changeCom').click() + sleep(1) + chrome.find_element_by_xpath('//span[text()="国药集团北京医疗器械有限公司"]/following-sibling::button').click() + sleep(1) + chrome.find_element_by_xpath('// button[text() = "确定"]').click() + sleep(1) + # chrome.find_element_by_xpath('//div[text()="销售管理"]').click() + # actions = ActionChains(chrome) + # actions.move_to_element(chrome.find_element_by_xpath('//div[text()="销售业务"]')).perform() + # chrome.find_element_by_xpath('//span[text()="销售订单"]').click() + order_link = chrome.find_element_by_xpath('//span[text()="销售订单"]') + chrome.execute_script("arguments[0].click();", order_link) + chrome.switch_to.frame(chrome.find_element_by_xpath('(//iframe[@class="metro-main-frame"])[2]')) + sleep(4) + chrome.find_element_by_xpath('//span[text()="新建"]').click() + sleep(4) + chrome.switch_to.frame(chrome.find_element_by_xpath('//iframe[contains(@name,"awsui-dialog-iframe")]')) + #获取订单号 + + orderno=chrome.find_element_by_xpath('//div[text() = "销售订单号 "]/following-sibling::div/span').text + print(orderno) + # chrome.switch_to.default_content() + sleep(4) + # while True: + # try: + # if chrome.find_element_by_xpath('//div[text()="订单公司名称 "]').is_displayed(): + # print(chrome.find_element_by_xpath('//div[text()="订单公司名称 "]').text) + # break + # except: + # continue + print(chrome.find_element_by_xpath('//div[text()="订单公司名称 "]').text) + + + sleep(2) + # chrome.find_element_by_xpath( + # '//div[text()="订单公司名称 "]/following-sibling::div/div/div/div/div/div/div/div/span/span/i').click() + # chrome.find_element_by_xpath('//input[@placeholder="模糊检索:公司名称,公司编码"]').send_keys('国药集团北京') + # chrome.find_element_by_xpath('//input[@placeholder="模糊检索:公司名称,公司编码"]').send_keys(Keys.ENTER) + # chrome.find_element_by_xpath('(//span[@class="el-radio__inner"])[1]').click() + + # chrome.find_element_by_xpath('//span[@class="ensureBtn"]/button').click() + # chrome.find_element_by_xpath('//button[@class="el-button el-button--primary el-button--mini"]').click() + + chrome.find_element_by_xpath('//div[text()="出库仓库 "]/following-sibling::div/div/div/div/div/div/div/div/span/span/i').click() + chrome.find_element_by_xpath('//input[@placeholder="模糊检索:仓库编码,仓库名称,是否传WMS,所属公司名称"]').send_keys('北京强生非') + chrome.find_element_by_xpath('//input[@placeholder="模糊检索:仓库编码,仓库名称,是否传WMS,所属公司名称"]').send_keys(Keys.ENTER) + # chrome.find_element_by_xpath('//span/input[@type="radio" and @value="03105272b49986351ef7eb2930b5454de"]').click() + btn_div= chrome.find_element_by_xpath('//span/input[@type="radio" and @value="03105272b49986351ef7eb2930b5454de"]') + chrome.execute_script("arguments[0].click();", btn_div) + chrome.find_element_by_xpath('(//button[@class="el-button el-button--primary el-button--default"])[2]').click() + sleep(1) + chrome.find_element_by_xpath('//div[text()="客户及合同信息"]').click() + chrome.find_element_by_xpath( + '//div[text()="合同号 "]/following-sibling::div/div/div/div/div/div/div/div/span/span/i').click() + chrome.find_element_by_xpath('//input[@placeholder="模糊检索:合同号,合同协议号,对方编码,项目名称,项目编码,业态编码,参考部门,参考部门编码,参考业务员,参考业务员编码,产品线名称,产品线编码,合同类型,合同属性"]').send_keys('38443') + chrome.find_element_by_xpath('//input[@placeholder="模糊检索:合同号,合同协议号,对方编码,项目名称,项目编码,业态编码,参考部门,参考部门编码,参考业务员,参考业务员编码,产品线名称,产品线编码,合同类型,合同属性"]').send_keys(Keys.ENTER) + chrome.find_element_by_xpath('//div[@class="multiple-header string_col" and text()="38443"]/ancestor-or-self::td/preceding-sibling::td/div/label/span/span').click() + chrome.find_element_by_xpath('(//button[@class="el-button el-button--primary el-button--default"])[3]').click() + sleep(2) + #客户名称 + chrome.find_element_by_xpath( + '//div[text()="采购合同/协议号 "]/following-sibling::div/div/div/div/div/div/div/div/span/span/i').click() + sleep(1) + chrome.find_element_by_xpath( + '//input[@placeholder="模糊检索:客户编码,客户名称,收货地址号,收货地址信息,公司编码,货币码,税率/税区,客户分类,联系人,联系人电话"]').send_keys( + '1000486') + sleep(2) + chrome.find_element_by_xpath( + '//input[@placeholder="模糊检索:客户编码,客户名称,收货地址号,收货地址信息,公司编码,货币码,税率/税区,客户分类,联系人,联系人电话"]').send_keys( + Keys.ENTER) + sleep(2) + chrome.find_element_by_xpath( + '//div[@class="multiple-header number_col" and text()="1000486"]/ancestor-or-self::td/preceding-sibling::td/div/label/span/span').click() + chrome.find_element_by_xpath('(//button[@class="el-button el-button--primary el-button--default"])[4]').click() + sleep(2) + #业务员名称 + chrome.find_element_by_xpath( + '//div[text()="业务员名称 "]/following-sibling::div/div/div/div/div/div/div/div/span/span/i').click() + sleep(2) + chrome.find_element_by_xpath('//input[@placeholder="模糊检索:业务员名称,业务员编码,业务部门名称,业务部门编码,部门类型编码"]').send_keys('杨春刚') + sleep(2) + chrome.find_element_by_xpath('//input[@placeholder="模糊检索:业务员名称,业务员编码,业务部门名称,业务部门编码,部门类型编码"]').send_keys(Keys.ENTER) + sleep(2) + chrome.find_element_by_xpath('(//div[text()="杨春刚"])[3]/ancestor-or-self::td/preceding-sibling::td/div/label/span/span').click() + sleep(2) + chrome.find_element_by_xpath('(//span[@class="ensureBtn"]/button[1])[4]').click() + #其他信息页签 + chrome.find_element_by_xpath('//div[text()="其他信息"]').click() + sleep(2) + chrome.find_element_by_xpath('//div[@cid="AWSUI.SwitchButton"]//div/div/div/div/span[1]').click() + # 子表信息录入 + chrome.find_element_by_xpath('//div[text()="主体信息"]').click() + + # 点击添加商品弹出添加商品子窗口 + for i in range(1): + chrome.find_element_by_xpath('//span[text()="添加商品"]').click() + add_goods('PTCA',chrome) + chrome.find_element_by_xpath('(//div[@class="el-dialog__body"]/div[2]/span/button[1]/span)[5]').click() + sleep(20) + # for i in range(1): + # chrome.find_element_by_xpath('//span[text()="添加商品"]').click() + # add_goods('PTCA', chrome) + # chrome.find_element_by_xpath('(//div[@class="el-dialog__body"]/div[2]/span/button[1]/span)[5]').click() + # sleep(10) + + # chrome.find_element_by_xpath('//span[text()="添加商品"]').click() + # chrome.find_element_by_xpath( + # '//input[@placeholder="模糊检索:商品编码,商品名称,规格型号,主计量单位,销售计量单位,厂家物料编码,存储条件说明,生产企业编码,供应商编码,行类型,商品性质,批发价,进口/国产/港澳台,件包数,产品备注,是否免备案,产品描述"]').send_keys( + # 'PTCA') + # chrome.find_element_by_xpath( + # '//input[@placeholder="模糊检索:商品编码,商品名称,规格型号,主计量单位,销售计量单位,厂家物料编码,存储条件说明,生产企业编码,供应商编码,行类型,商品性质,批发价,进口/国产/港澳台,件包数,产品备注,是否免备案,产品描述"]').send_keys( + # Keys.ENTER) + # sleep(1) + # chrome.find_element_by_xpath('//th[@class="el-table_18_column_229 multiple-column el-table-column--selection is-leaf headerCellClassName el-table__cell"]/div/label/span/span').click() + # chrome.find_element_by_xpath('(//div[@class="el-dialog__body"]/div[2]/span/button[1]/span)[5]').click() + # sleep(2) + # sleep(6) + while True: + try: + chrome.find_element_by_xpath('//div[@class="el-loading-spinner"]').is_displayed() + continue + except: + break + for i in range(1,101): + sleep(2) + element = chrome.find_element_by_xpath('(//td[@colid="col_177"])[%s]'%i) + chrome.execute_script("arguments[0].click();", element) + + # element=chrome.find_element_by_xpath('(//td[@colid="col_177"])[%s]'%i) + # element.click() + # element=chrome.find_element_by_xpath('//span[@class="form-grid-check-num" and text()="%s"]/ancestor::td/following-sibling::td[5]'%i) + # element.click() + sleep(2) + # element.send_keys("1") + # chrome.execute_script("document.getElementsByClassName('awsui-input-number-right')[0].value='1'") + chrome.find_element_by_class_name('awsui-input-number-right').send_keys('1') + # chrome.find_element_by_xpath('//td[@colid="col_177"]/div/div').send_keys('1') + sleep(2) + chrome.find_element_by_xpath('(//td[@colid="col_178"])[%s]'%i).click() + # element = chrome.find_element_by_xpath('(//td[@colid="col_178"])[%s]' % i) + # chrome.execute_script("arguments[0].click();", element) + # element = chrome.find_element_by_xpath( + # '//span[@class="form-grid-check-num" and text()="%s"]/ancestor::td/following-sibling::td[6]' % i) + # element.click() + sleep(2) + chrome.execute_script( + "document.getElementsByClassName('vxe-table--body-wrapper body--wrapper')[0].scrollTop = %s*30;" % i) + sleep(2) + + # print('200条输入完毕') + # chrome.find_element_by_xpath('//button[@ class="vxe-pager--next-btn" and @title="下一页"]').click() + # # sleep(2) + # chrome.execute_script( + # "document.getElementsByClassName('vxe-table--body-wrapper body--wrapper')[0].scrollTop=0;") + + #输入第二页数据 + # for i in range(1,51): + # + # # element = chrome.find_element_by_xpath('(//td[@colid="col_177"])[%s]'%i) + # # chrome.execute_script("arguments[0].click();", element) + # + # # element=chrome.find_element_by_xpath('(//td[@colid="col_177"])[%s]'%i) + # # element.click() + # element=chrome.find_element_by_xpath('//span[@class="form-grid-check-num" and text()="%s"]/ancestor::td/following-sibling::td[5]'%i) + # element.click() + # sleep(2) + # # element.send_keys("1") + # # chrome.execute_script("document.getElementsByClassName('awsui-input-number-right')[0].value='1'") + # chrome.find_element_by_class_name('awsui-input-number-right').send_keys('1') + # # chrome.find_element_by_xpath('//td[@colid="col_177"]/div/div').send_keys('1') + # sleep(2) + # # chrome.find_element_by_xpath('(//td[@colid="col_178"])[%s]'%i).click() + # # element = chrome.find_element_by_xpath('(//td[@colid="col_178"])[%s]' % i) + # # chrome.execute_script("arguments[0].click();", element) + # element = chrome.find_element_by_xpath( + # '//span[@class="form-grid-check-num" and text()="%s"]/ancestor::td/following-sibling::td[6]' % i) + # element.click() + # sleep(2) + print('ok') + + #滚动条右拉 + # document.getElementsByClassName('vxe-table--footer-wrapper body--wrapper')[0].scrollLeft = 5000 + # chrome.execute_script("document.getElementsByClassName('vxe-table--footer-wrapper body--wrapper')[0].scrollLeft = 2000;") + # sleep(1) + #右侧滚动条向上 + # chrome.execute_script("document.getElementsByClassName('vxe-table--body-wrapper body--wrapper')[0].scrollTop=0;") + # for i in range(1,201): + # element = chrome.find_element_by_xpath('(//td[@colid="col_197"])[%s]'%i) + # element.click() + # sleep(2) + # chrome.execute_script("document.getElementsByClassName('awsui-input-number-right')[0].value='8'") + # sleep(2) + # element = chrome.find_element_by_xpath('(//td[@colid="col_198"])[%s]'%i) + # element.click() + # sleep(2) + # chrome.execute_script("document.getElementsByClassName('awsui-input-number-right')[0].value='8'") + # sleep(2) + # lock = threading.Lock() + # lock.acquire() + # start = time.clock() + #方案一============================开始 + if type==1: + import datetime + now = datetime.datetime.now() + one_minutes_later = now + datetime.timedelta(minutes=1) + now = now.strftime('%Y-%m-%d %H:%M') + one_minutes_later = one_minutes_later.strftime('%Y-%m-%d %H:%M') + # print('bbbbbbbb'+one_minutes_later) + while True: + now = datetime.datetime.now().strftime('%Y-%m-%d %H:%M') + # print('变化的时间' + now) + if now == one_minutes_later: + print('时间到了') + # global start + start = time.clock() + chrome.find_element_by_xpath('//span[text()="提交"]').click() + break + # 方案一============================结束 + #方案二===============开始 + if type==2: + m=get_time_m() #当前时间的分钟 + m1=get_submit_time1(m)#计划提交时间的分钟 + print('销售订单计划提交时间的分钟',m1) + while True: + m2=get_time_m() #循环获取当前的分 + # sleep(30) + if (m2==m1): + # chrome.find_element_by_xpath('//span[text()="保存"]').click() + start = time.clock() + chrome.find_element_by_xpath('//span[text()="提交"]').click() + break + #方案二===============结束 + chrome.implicitly_wait(0) + while True: + try: + if chrome.find_element_by_xpath('//button[@class="el-button el-button--primary el-button--mini awsui-button awsui-button--primary"]').is_displayed()==True: + chrome.find_element_by_xpath('//button[@class="el-button el-button--primary el-button--mini awsui-button awsui-button--primary"]').click() + break + + except: + continue + while True: + try: + if chrome.find_element_by_xpath('//p[text()="办理成功"]').is_displayed()==True: + # print('订单完成了') + break + # else: + # print('共享任务创建成功的元素没有出现') + except: + continue + # lock.release() + # sleep(2) + # chrome.find_element_by_xpath('//button[@class="el-button el-button--primary el-button--mini awsui-button awsui-button--primary"]//span[text()="确定"]').click() + chrome.switch_to.default_content() + chrome.switch_to.frame(chrome.find_element_by_xpath('(//iframe[@class="metro-main-frame"])[2]')) + # sleep(60) + # while True: + # try: + # # if chrome.find_element_by_xpath('(//span[text()="%s"])[2]'%orderno).is_displayed()==True: + # if chrome.find_element_by_xpath( + # '//span[text() = "1"]/ancestor-or-self::td/following-sibling::td/div/span').is_displayed() == True: + # # print('aaaaaaaaaaaaaaaaaaaaaaaa', chrome.find_element_by_xpath( + # # '//span[text() = "1"]/ancestor-or-self::td/following-sibling::td/div/span').text) + # break + # except: + # continue + chrome.implicitly_wait(30) + print('销售订单创建完成') + end = time.clock() + print(start, end) + imgInfo = getErrorPhoto(chrome) + imgName = imgInfo[0] + image_path = imgInfo[1] + info=orderno+'执行耗时'+str(end - start) + now = get_time() + writeFile_append(pro_path + '/logs/catalina.out', info) + send_email1(image_path, info) + print('CPU执行时间: ', end - start) + except Exception as e: + print('出现异常') + # 将日志写入到文件中单独存储 + pro_path = get_pro_path() + traceback.print_exc() + imgInfo = getErrorPhoto(chrome) + imgName = imgInfo[0] + image_path = imgInfo[1] + print(imgName, image_path) + print(repr(e)) + info = repr(e) + now = get_time() + writeFile_append(pro_path + '/logs/logerror%s.txt' % now, info) + # send_email1(image_path, info) +if __name__ == "__main__": + # 创建多线程时, 需要制定该线程执行的任务.name线程名字 target目标函数名 + # t1 = threading.Thread(target=job,name="job1") + # t2 = threading.Thread(target=job,name="job2") + # t1.start() + # t2.start() + # opt = ChromeOptions() # 创建 Chrome 参数对象 + # # opt.headless = True # 把 Chrome 设置成无界面模式,windows/Linux 皆可 + # opt.headless = False # 把 Chrome 设置成无界面模式,windows/Linux 皆可 + # opt.add_argument('--start-maximized') + # opt.add_argument('--window-size=1280x1024') + # # chrome = Chrome(options=opt) # 创建无界面对象 + # chrome = WebChrome(chrome_options=opt) # airtest中的类 + + count=10 + for i in range(count): + t = threading.Thread(target=job) + t.start() + t.join() + +def start1(): + count = 1 + for i in range(count): + t = threading.Thread(target=job) + t.start() + t.join() + + # print(threading.active_count()) + # print("程序执行结束.....") + # create_salesorder() diff --git "a/testcase/od/\345\244\232\346\230\216\347\273\206/\351\224\200\345\224\256\350\256\242\345\215\225_\345\244\232\346\230\216\347\273\206300.py" "b/testcase/od/\345\244\232\346\230\216\347\273\206/\351\224\200\345\224\256\350\256\242\345\215\225_\345\244\232\346\230\216\347\273\206300.py" new file mode 100644 index 0000000000000000000000000000000000000000..8afe7a59adcbda867f1313a3050a8dd426b06006 --- /dev/null +++ "b/testcase/od/\345\244\232\346\230\216\347\273\206/\351\224\200\345\224\256\350\256\242\345\215\225_\345\244\232\346\230\216\347\273\206300.py" @@ -0,0 +1,387 @@ +import datetime +import threading +import time +import traceback + +from airtest.core.api import * +from selenium import webdriver +from selenium.webdriver import DesiredCapabilities +from selenium.webdriver.common.keys import Keys +from airtest_selenium.proxy import * +from selenium.webdriver import Chrome, ChromeOptions +from airtest.core.api import * +from airtest_selenium.proxy import * + +from mail1 import send_email1 +from public.tools import * + + + + +# chrome = webdriver.Chrome(chrome_options=opt) + +def job(): + print("这是一个需要执行的任务。。。。。") + create_salesorder() + print("当前线程的个数:", threading.active_count()) + time.sleep(1) + print("当前线程的信息:", threading.current_thread()) +def add_goods(goodsname,chrome): + chrome.find_element_by_xpath( + '//input[@placeholder="模糊检索:商品编码,商品名称,规格型号,主计量单位,销售计量单位,厂家物料编码,存储条件说明,生产企业编码,供应商编码,行类型,商品性质,批发价,进口/国产/港澳台,件包数,产品备注,是否免备案,产品描述"]').send_keys( + goodsname) + chrome.find_element_by_xpath( + '//input[@placeholder="模糊检索:商品编码,商品名称,规格型号,主计量单位,销售计量单位,厂家物料编码,存储条件说明,生产企业编码,供应商编码,行类型,商品性质,批发价,进口/国产/港澳台,件包数,产品备注,是否免备案,产品描述"]').send_keys( + Keys.ENTER) + #获取页数 + # pagecount=chrome.find_element_by_xpath('(// li[ @class ="number"])[16]').text + pagecount=10 + for i in range(int(pagecount)): + # chrome.find_element_by_xpath('//span[text()="添加商品"]').click() + # chrome.find_element_by_xpath( + # '//input[@placeholder="模糊检索:商品编码,商品名称,规格型号,主计量单位,销售计量单位,厂家物料编码,存储条件说明,生产企业编码,供应商编码,行类型,商品性质,批发价,进口/国产/港澳台,件包数,产品备注,是否免备案,产品描述"]').send_keys( + # goodsname) + # chrome.find_element_by_xpath( + # '//input[@placeholder="模糊检索:商品编码,商品名称,规格型号,主计量单位,销售计量单位,厂家物料编码,存储条件说明,生产企业编码,供应商编码,行类型,商品性质,批发价,进口/国产/港澳台,件包数,产品备注,是否免备案,产品描述"]').send_keys( + # Keys.ENTER) + sleep(1) + chrome.find_element_by_xpath( + '//th[@class="el-table_18_column_269 multiple-column el-table-column--selection is-leaf headerCellClassName el-table__cell"]/div/label/span/span').click() + #翻页 + chrome.find_element_by_xpath('(//button[@class="btn-next is-last"])[6]').click() + + #点击确定 + # chrome.find_element_by_xpath('(//div[@class="el-dialog__body"]/div[2]/span/button[1]/span)[5]').click() + sleep(2) +def create_salesorder(type=1): + try: + import time + pro_path = get_pro_path() + # start = time.clock() + # caps = DesiredCapabilities().CHROME + # caps["pageLoadStrategy"] = "normal" # complete + # caps["pageLoadStrategy"] = "eager" # interactive + # caps["pageLoadStrategy"] = "none" + # chrome = webdriver.Chrome(desired_capabilities=caps) + opt = ChromeOptions() # 创建 Chrome 参数对象 + # opt.headless = True # 把 Chrome 设置成无界面模式,windows/Linux 皆可 + opt.headless = False # 把 Chrome 设置成无界面模式,windows/Linux 皆可 + opt.add_argument('--start-maximized') + opt.add_argument('--window-size=1280x1024') + # chrome = Chrome(options=opt) # 创建无界面对象 + # chrome = WebChrome(chrome_options=opt) + chrome = WebChrome(chrome_options=opt) + # chrome=webdriver.Chrome() + chrome.implicitly_wait(20) + chrome.get("http://10.17.65.200:8088/portal/") + # chrome.get("http://10.17.65.207:8088/uat/r/w") + sleep(2) + chrome.implicitly_wait(30) + # chrome.maximize_window() + chrome.find_element_by_id('input1').clear() + chrome.find_element_by_id('input1').send_keys('admin') + chrome.find_element_by_id('input2').clear() + chrome.find_element_by_id('input2').send_keys('Gyxc1234') + chrome.find_element_by_id('input2').send_keys(Keys.ENTER) + while True: + try: + if(chrome.find_element_by_xpath('//span[text()="退出"]').is_displayed()==True): + break + except: + continue + #切换所属公司 + chrome.find_element_by_class_name('changeCom').click() + sleep(1) + chrome.find_element_by_xpath('//span[text()="国药集团北京医疗器械有限公司"]/following-sibling::button').click() + sleep(1) + chrome.find_element_by_xpath('// button[text() = "确定"]').click() + sleep(1) + # chrome.find_element_by_xpath('//div[text()="销售管理"]').click() + # actions = ActionChains(chrome) + # actions.move_to_element(chrome.find_element_by_xpath('//div[text()="销售业务"]')).perform() + # chrome.find_element_by_xpath('//span[text()="销售订单"]').click() + order_link = chrome.find_element_by_xpath('//span[text()="销售订单"]') + chrome.execute_script("arguments[0].click();", order_link) + chrome.switch_to.frame(chrome.find_element_by_xpath('(//iframe[@class="metro-main-frame"])[2]')) + sleep(4) + chrome.find_element_by_xpath('//span[text()="新建"]').click() + sleep(4) + chrome.switch_to.frame(chrome.find_element_by_xpath('//iframe[contains(@name,"awsui-dialog-iframe")]')) + #获取订单号 + + orderno=chrome.find_element_by_xpath('//div[text() = "销售订单号 "]/following-sibling::div/span').text + print(orderno) + # chrome.switch_to.default_content() + sleep(4) + # while True: + # try: + # if chrome.find_element_by_xpath('//div[text()="订单公司名称 "]').is_displayed(): + # print(chrome.find_element_by_xpath('//div[text()="订单公司名称 "]').text) + # break + # except: + # continue + print(chrome.find_element_by_xpath('//div[text()="订单公司名称 "]').text) + + + sleep(2) + # chrome.find_element_by_xpath( + # '//div[text()="订单公司名称 "]/following-sibling::div/div/div/div/div/div/div/div/span/span/i').click() + # chrome.find_element_by_xpath('//input[@placeholder="模糊检索:公司名称,公司编码"]').send_keys('国药集团北京') + # chrome.find_element_by_xpath('//input[@placeholder="模糊检索:公司名称,公司编码"]').send_keys(Keys.ENTER) + # chrome.find_element_by_xpath('(//span[@class="el-radio__inner"])[1]').click() + + # chrome.find_element_by_xpath('//span[@class="ensureBtn"]/button').click() + # chrome.find_element_by_xpath('//button[@class="el-button el-button--primary el-button--mini"]').click() + + chrome.find_element_by_xpath('//div[text()="出库仓库 "]/following-sibling::div/div/div/div/div/div/div/div/span/span/i').click() + chrome.find_element_by_xpath('//input[@placeholder="模糊检索:仓库编码,仓库名称,是否传WMS,所属公司名称"]').send_keys('北京强生非') + chrome.find_element_by_xpath('//input[@placeholder="模糊检索:仓库编码,仓库名称,是否传WMS,所属公司名称"]').send_keys(Keys.ENTER) + # chrome.find_element_by_xpath('//span/input[@type="radio" and @value="03105272b49986351ef7eb2930b5454de"]').click() + btn_div= chrome.find_element_by_xpath('//span/input[@type="radio" and @value="03105272b49986351ef7eb2930b5454de"]') + chrome.execute_script("arguments[0].click();", btn_div) + chrome.find_element_by_xpath('(//button[@class="el-button el-button--primary el-button--default"])[2]').click() + sleep(1) + chrome.find_element_by_xpath('//div[text()="客户及合同信息"]').click() + chrome.find_element_by_xpath( + '//div[text()="合同号 "]/following-sibling::div/div/div/div/div/div/div/div/span/span/i').click() + chrome.find_element_by_xpath('//input[@placeholder="模糊检索:合同号,合同协议号,对方编码,项目名称,项目编码,业态编码,参考部门,参考部门编码,参考业务员,参考业务员编码,产品线名称,产品线编码,合同类型,合同属性"]').send_keys('38443') + chrome.find_element_by_xpath('//input[@placeholder="模糊检索:合同号,合同协议号,对方编码,项目名称,项目编码,业态编码,参考部门,参考部门编码,参考业务员,参考业务员编码,产品线名称,产品线编码,合同类型,合同属性"]').send_keys(Keys.ENTER) + chrome.find_element_by_xpath('//div[@class="multiple-header string_col" and text()="38443"]/ancestor-or-self::td/preceding-sibling::td/div/label/span/span').click() + chrome.find_element_by_xpath('(//button[@class="el-button el-button--primary el-button--default"])[3]').click() + #客户名称 + chrome.find_element_by_xpath( + '//div[text()="客户名称 "]/following-sibling::div/div/div/div/div/div/div/div/span/span/i').click() + + chrome.find_element_by_xpath( + '//input[@placeholder="模糊检索:客户编码,客户名称,收货地址号,收货地址信息,公司编码,货币码,税率/税区,客户分类,联系人,联系人电话"]').send_keys( + '1000486') + chrome.find_element_by_xpath( + '//input[@placeholder="模糊检索:客户编码,客户名称,收货地址号,收货地址信息,公司编码,货币码,税率/税区,客户分类,联系人,联系人电话"]').send_keys( + Keys.ENTER) + chrome.find_element_by_xpath( + '//div[@class="multiple-header number_col" and text()="1000486"]/ancestor-or-self::td/preceding-sibling::td/div/label/span/span').click() + chrome.find_element_by_xpath('(//button[@class="el-button el-button--primary el-button--default"])[4]').click() + + #业务员名称 + chrome.find_element_by_xpath( + '//div[text()="业务员名称 "]/following-sibling::div/div/div/div/div/div/div/div/span/span/i').click() + chrome.find_element_by_xpath('//input[@placeholder="模糊检索:业务员名称,业务员编码,业务部门名称,业务部门编码,部门类型编码"]').send_keys('杨春刚') + chrome.find_element_by_xpath('//input[@placeholder="模糊检索:业务员名称,业务员编码,业务部门名称,业务部门编码,部门类型编码"]').send_keys(Keys.ENTER) + chrome.find_element_by_xpath('(//div[text()="杨春刚"])[3]/ancestor-or-self::td/preceding-sibling::td/div/label/span/span').click() + chrome.find_element_by_xpath('(//span[@class="ensureBtn"]/button[1])[4]').click() + #其他信息页签 + chrome.find_element_by_xpath('//div[text()="其他信息"]').click() + chrome.find_element_by_xpath('//div[@cid="AWSUI.SwitchButton"]//div/div/div/div/span[1]').click() + # 子表信息录入 + chrome.find_element_by_xpath('//div[text()="主体信息"]').click() + + # 点击添加商品弹出添加商品子窗口 + for i in range(3): + chrome.find_element_by_xpath('//span[text()="添加商品"]').click() + add_goods('PTCA',chrome) + chrome.find_element_by_xpath('(//div[@class="el-dialog__body"]/div[2]/span/button[1]/span)[5]').click() + sleep(20) + # for i in range(1): + # chrome.find_element_by_xpath('//span[text()="添加商品"]').click() + # add_goods('PTCA', chrome) + # chrome.find_element_by_xpath('(//div[@class="el-dialog__body"]/div[2]/span/button[1]/span)[5]').click() + # sleep(10) + + # chrome.find_element_by_xpath('//span[text()="添加商品"]').click() + # chrome.find_element_by_xpath( + # '//input[@placeholder="模糊检索:商品编码,商品名称,规格型号,主计量单位,销售计量单位,厂家物料编码,存储条件说明,生产企业编码,供应商编码,行类型,商品性质,批发价,进口/国产/港澳台,件包数,产品备注,是否免备案,产品描述"]').send_keys( + # 'PTCA') + # chrome.find_element_by_xpath( + # '//input[@placeholder="模糊检索:商品编码,商品名称,规格型号,主计量单位,销售计量单位,厂家物料编码,存储条件说明,生产企业编码,供应商编码,行类型,商品性质,批发价,进口/国产/港澳台,件包数,产品备注,是否免备案,产品描述"]').send_keys( + # Keys.ENTER) + # sleep(1) + # chrome.find_element_by_xpath('//th[@class="el-table_18_column_229 multiple-column el-table-column--selection is-leaf headerCellClassName el-table__cell"]/div/label/span/span').click() + # chrome.find_element_by_xpath('(//div[@class="el-dialog__body"]/div[2]/span/button[1]/span)[5]').click() + # sleep(2) + sleep(6) + for i in range(1,201): + + # element = chrome.find_element_by_xpath('(//td[@colid="col_177"])[%s]'%i) + # chrome.execute_script("arguments[0].click();", element) + + # element=chrome.find_element_by_xpath('(//td[@colid="col_177"])[%s]'%i) + # element.click() + element=chrome.find_element_by_xpath('//span[@class="form-grid-check-num" and text()="%s"]/ancestor::td/following-sibling::td[5]'%i) + element.click() + sleep(1) + # element.send_keys("1") + # chrome.execute_script("document.getElementsByClassName('awsui-input-number-right')[0].value='1'") + chrome.find_element_by_class_name('awsui-input-number-right').send_keys('1') + # chrome.find_element_by_xpath('//td[@colid="col_177"]/div/div').send_keys('1') + sleep(1) + # chrome.find_element_by_xpath('(//td[@colid="col_178"])[%s]'%i).click() + # element = chrome.find_element_by_xpath('(//td[@colid="col_178"])[%s]' % i) + # chrome.execute_script("arguments[0].click();", element) + element = chrome.find_element_by_xpath( + '//span[@class="form-grid-check-num" and text()="%s"]/ancestor::td/following-sibling::td[6]' % i) + element.click() + sleep(2) + + print('200条输入完毕') + chrome.find_element_by_xpath('//button[@ class="vxe-pager--next-btn" and @title="下一页"]').click() + sleep(15) + chrome.execute_script( + "document.getElementsByClassName('vxe-table--body-wrapper body--wrapper')[0].scrollTop=0;") + + #输入第二页数据 + for i in range(1,101): + + # element = chrome.find_element_by_xpath('(//td[@colid="col_177"])[%s]'%i) + # chrome.execute_script("arguments[0].click();", element) + + # element=chrome.find_element_by_xpath('(//td[@colid="col_177"])[%s]'%i) + # element.click() + element=chrome.find_element_by_xpath('//span[@class="form-grid-check-num" and text()="%s"]/ancestor::td/following-sibling::td[5]'%i) + element.click() + sleep(1) + # element.send_keys("1") + # chrome.execute_script("document.getElementsByClassName('awsui-input-number-right')[0].value='1'") + chrome.find_element_by_class_name('awsui-input-number-right').send_keys('1') + # chrome.find_element_by_xpath('//td[@colid="col_177"]/div/div').send_keys('1') + sleep(1) + # chrome.find_element_by_xpath('(//td[@colid="col_178"])[%s]'%i).click() + # element = chrome.find_element_by_xpath('(//td[@colid="col_178"])[%s]' % i) + # chrome.execute_script("arguments[0].click();", element) + element = chrome.find_element_by_xpath( + '//span[@class="form-grid-check-num" and text()="%s"]/ancestor::td/following-sibling::td[6]' % i) + element.click() + sleep(2) + print('ok') + + #滚动条右拉 + # document.getElementsByClassName('vxe-table--footer-wrapper body--wrapper')[0].scrollLeft = 5000 + # chrome.execute_script("document.getElementsByClassName('vxe-table--footer-wrapper body--wrapper')[0].scrollLeft = 2000;") + # sleep(1) + #右侧滚动条向上 + # chrome.execute_script("document.getElementsByClassName('vxe-table--body-wrapper body--wrapper')[0].scrollTop=0;") + # for i in range(1,201): + # element = chrome.find_element_by_xpath('(//td[@colid="col_197"])[%s]'%i) + # element.click() + # sleep(2) + # chrome.execute_script("document.getElementsByClassName('awsui-input-number-right')[0].value='8'") + # sleep(2) + # element = chrome.find_element_by_xpath('(//td[@colid="col_198"])[%s]'%i) + # element.click() + # sleep(2) + # chrome.execute_script("document.getElementsByClassName('awsui-input-number-right')[0].value='8'") + # sleep(2) + # lock = threading.Lock() + # lock.acquire() + start = time.clock() + #方案一============================开始 + if type==1: + import datetime + now = datetime.datetime.now() + one_minutes_later = now + datetime.timedelta(minutes=1) + now = now.strftime('%Y-%m-%d %H:%M') + one_minutes_later = one_minutes_later.strftime('%Y-%m-%d %H:%M') + # print('bbbbbbbb'+one_minutes_later) + while True: + now = datetime.datetime.now().strftime('%Y-%m-%d %H:%M') + # print('变化的时间' + now) + if now == one_minutes_later: + print('时间到了') + # global start + start = time.clock() + chrome.find_element_by_xpath('//span[text()="提交"]').click() + break + # 方案一============================结束 + #方案二===============开始 + if type==2: + m=get_time_m() #当前时间的分钟 + m1=get_submit_time(m)#计划提交时间的分钟 + print('销售订单计划提交时间的分钟',m1) + while True: + m2=get_time_m() #循环获取当前的分 + # sleep(30) + if (m2==m1): + # chrome.find_element_by_xpath('//span[text()="保存"]').click() + start = time.clock() + chrome.find_element_by_xpath('//span[text()="提交"]').click() + break + #方案二===============结束 + while True: + try: + if chrome.find_element_by_xpath('//p[text()="共享任务创建成功"]').is_displayed()==True: + # print('订单完成了') + break + # else: + # print('共享任务创建成功的元素没有出现') + except: + continue + # lock.release() + sleep(2) + # chrome.find_element_by_xpath('//button[@class="el-button el-button--primary el-button--mini awsui-button awsui-button--primary"]//span[text()="确定"]').click() + chrome.switch_to.default_content() + chrome.switch_to.frame(chrome.find_element_by_xpath('(//iframe[@class="metro-main-frame"])[2]')) + sleep(60) + while True: + try: + # if chrome.find_element_by_xpath('(//span[text()="%s"])[2]'%orderno).is_displayed()==True: + if chrome.find_element_by_xpath( + '//span[text() = "1"]/ancestor-or-self::td/following-sibling::td/div/span').is_displayed() == True: + # print('aaaaaaaaaaaaaaaaaaaaaaaa', chrome.find_element_by_xpath( + # '//span[text() = "1"]/ancestor-or-self::td/following-sibling::td/div/span').text) + break + except: + continue + print('销售订单创建完成') + end = time.clock() + print(start, end) + imgInfo = getErrorPhoto(chrome) + imgName = imgInfo[0] + image_path = imgInfo[1] + info=orderno+'执行耗时'+str(end - start) + now = get_time() + writeFile_append(pro_path + '/logs/catalina.out', info) + send_email1(image_path, info) + print('CPU执行时间: ', end - start) + except Exception as e: + print('出现异常') + # 将日志写入到文件中单独存储 + pro_path = get_pro_path() + traceback.print_exc() + imgInfo = getErrorPhoto(chrome) + imgName = imgInfo[0] + image_path = imgInfo[1] + print(imgName, image_path) + print(repr(e)) + info = repr(e) + now = get_time() + writeFile_append(pro_path + '/logs/logerror%s.txt' % now, info) + # send_email1(image_path, info) +if __name__ == "__main__": + # 创建多线程时, 需要制定该线程执行的任务.name线程名字 target目标函数名 + # t1 = threading.Thread(target=job,name="job1") + # t2 = threading.Thread(target=job,name="job2") + # t1.start() + # t2.start() + # opt = ChromeOptions() # 创建 Chrome 参数对象 + # # opt.headless = True # 把 Chrome 设置成无界面模式,windows/Linux 皆可 + # opt.headless = False # 把 Chrome 设置成无界面模式,windows/Linux 皆可 + # opt.add_argument('--start-maximized') + # opt.add_argument('--window-size=1280x1024') + # # chrome = Chrome(options=opt) # 创建无界面对象 + # chrome = WebChrome(chrome_options=opt) # airtest中的类 + + count=1 + for i in range(count): + t = threading.Thread(target=job) + t.start() + t.join() + +def start1(): + count = 1 + for i in range(count): + t = threading.Thread(target=job) + t.start() + t.join() + + # print(threading.active_count()) + # print("程序执行结束.....") + # create_salesorder() diff --git "a/testcase/od/\345\244\232\346\230\216\347\273\206/\351\224\200\345\224\256\350\256\242\345\215\225_\345\244\232\346\230\216\347\273\206300_\345\257\274\345\205\245_selenium\344\270\215\346\224\257\346\214\201.py" "b/testcase/od/\345\244\232\346\230\216\347\273\206/\351\224\200\345\224\256\350\256\242\345\215\225_\345\244\232\346\230\216\347\273\206300_\345\257\274\345\205\245_selenium\344\270\215\346\224\257\346\214\201.py" new file mode 100644 index 0000000000000000000000000000000000000000..9cadd4d4aec49361d2f30b682fbea19127dd122d --- /dev/null +++ "b/testcase/od/\345\244\232\346\230\216\347\273\206/\351\224\200\345\224\256\350\256\242\345\215\225_\345\244\232\346\230\216\347\273\206300_\345\257\274\345\205\245_selenium\344\270\215\346\224\257\346\214\201.py" @@ -0,0 +1,328 @@ +import datetime +import threading +import time +import traceback + +from airtest.core.api import * +from selenium import webdriver +from selenium.webdriver import DesiredCapabilities +from selenium.webdriver.common.keys import Keys +from airtest_selenium.proxy import * +from selenium.webdriver import Chrome, ChromeOptions +from airtest.core.api import * +from airtest_selenium.proxy import * + +from mail1 import send_email1 +from public.tools import * + + + + +# chrome = webdriver.Chrome(chrome_options=opt) + +def job(): + print("这是一个需要执行的任务。。。。。") + create_salesorder() + print("当前线程的个数:", threading.active_count()) + time.sleep(1) + print("当前线程的信息:", threading.current_thread()) +def add_goods(goodsname,chrome): + chrome.find_element_by_xpath( + '//input[@placeholder="模糊检索:商品编码,商品名称,规格型号,主计量单位,销售计量单位,厂家物料编码,存储条件说明,生产企业编码,供应商编码,行类型,商品性质,批发价,进口/国产/港澳台,件包数,产品备注,是否免备案,产品描述"]').send_keys( + goodsname) + chrome.find_element_by_xpath( + '//input[@placeholder="模糊检索:商品编码,商品名称,规格型号,主计量单位,销售计量单位,厂家物料编码,存储条件说明,生产企业编码,供应商编码,行类型,商品性质,批发价,进口/国产/港澳台,件包数,产品备注,是否免备案,产品描述"]').send_keys( + Keys.ENTER) + #获取页数 + pagecount=chrome.find_element_by_xpath('(// li[ @class ="number"])[16]').text + pagecount=10 + for i in range(int(pagecount)): + # chrome.find_element_by_xpath('//span[text()="添加商品"]').click() + # chrome.find_element_by_xpath( + # '//input[@placeholder="模糊检索:商品编码,商品名称,规格型号,主计量单位,销售计量单位,厂家物料编码,存储条件说明,生产企业编码,供应商编码,行类型,商品性质,批发价,进口/国产/港澳台,件包数,产品备注,是否免备案,产品描述"]').send_keys( + # goodsname) + # chrome.find_element_by_xpath( + # '//input[@placeholder="模糊检索:商品编码,商品名称,规格型号,主计量单位,销售计量单位,厂家物料编码,存储条件说明,生产企业编码,供应商编码,行类型,商品性质,批发价,进口/国产/港澳台,件包数,产品备注,是否免备案,产品描述"]').send_keys( + # Keys.ENTER) + sleep(1) + chrome.find_element_by_xpath( + '//th[@class="el-table_18_column_229 multiple-column el-table-column--selection is-leaf headerCellClassName el-table__cell"]/div/label/span/span').click() + #翻页 + chrome.find_element_by_xpath('(//button[@class="btn-next is-last"])[6]').click() + + #点击确定 + # chrome.find_element_by_xpath('(//div[@class="el-dialog__body"]/div[2]/span/button[1]/span)[5]').click() + sleep(2) +def create_salesorder(type=1): + try: + import time + pro_path = get_pro_path() + # start = time.clock() + # caps = DesiredCapabilities().CHROME + # caps["pageLoadStrategy"] = "normal" # complete + # caps["pageLoadStrategy"] = "eager" # interactive + # caps["pageLoadStrategy"] = "none" + # chrome = webdriver.Chrome(desired_capabilities=caps) + opt = ChromeOptions() # 创建 Chrome 参数对象 + # opt.headless = True # 把 Chrome 设置成无界面模式,windows/Linux 皆可 + opt.headless = False # 把 Chrome 设置成无界面模式,windows/Linux 皆可 + opt.add_argument('--start-maximized') + opt.add_argument('--window-size=1280x1024') + # chrome = Chrome(options=opt) # 创建无界面对象 + # chrome = WebChrome(chrome_options=opt) + chrome = WebChrome(chrome_options=opt) + # chrome=webdriver.Chrome() + chrome.implicitly_wait(20) + chrome.get("http://10.17.65.200:8088/portal/") + # chrome.get("http://10.17.65.207:8088/uat/r/w") + sleep(2) + chrome.implicitly_wait(30) + # chrome.maximize_window() + chrome.find_element_by_id('input1').clear() + chrome.find_element_by_id('input1').send_keys('admin') + chrome.find_element_by_id('input2').clear() + chrome.find_element_by_id('input2').send_keys('Gyxc1234') + chrome.find_element_by_id('input2').send_keys(Keys.ENTER) + while True: + try: + if(chrome.find_element_by_xpath('//span[text()="退出"]').is_displayed()==True): + break + except: + continue + #切换所属公司 + chrome.find_element_by_class_name('changeCom').click() + sleep(1) + chrome.find_element_by_xpath('//span[text()="国药集团北京医疗器械有限公司"]/following-sibling::button').click() + sleep(1) + chrome.find_element_by_xpath('// button[text() = "确定"]').click() + sleep(1) + # chrome.find_element_by_xpath('//div[text()="销售管理"]').click() + # actions = ActionChains(chrome) + # actions.move_to_element(chrome.find_element_by_xpath('//div[text()="销售业务"]')).perform() + # chrome.find_element_by_xpath('//span[text()="销售订单"]').click() + order_link = chrome.find_element_by_xpath('//span[text()="销售订单"]') + chrome.execute_script("arguments[0].click();", order_link) + chrome.switch_to.frame(chrome.find_element_by_xpath('(//iframe[@class="metro-main-frame"])[2]')) + sleep(4) + chrome.find_element_by_xpath('//span[text()="新建"]').click() + sleep(4) + chrome.switch_to.frame(chrome.find_element_by_xpath('//iframe[contains(@name,"awsui-dialog-iframe")]')) + #获取订单号 + + orderno=chrome.find_element_by_xpath('//div[text() = "销售订单号 "]/following-sibling::div/span').text + print(orderno) + # chrome.switch_to.default_content() + sleep(4) + # while True: + # try: + # if chrome.find_element_by_xpath('//div[text()="订单公司名称 "]').is_displayed(): + # print(chrome.find_element_by_xpath('//div[text()="订单公司名称 "]').text) + # break + # except: + # continue + print(chrome.find_element_by_xpath('//div[text()="订单公司名称 "]').text) + + + sleep(2) + chrome.find_element_by_xpath( + '//div[text()="订单公司名称 "]/following-sibling::div/div/div/div/div/div/div/div/span/span/i').click() + chrome.find_element_by_xpath('//input[@placeholder="模糊检索:公司名称,公司编码"]').send_keys('国药集团北京') + chrome.find_element_by_xpath('//input[@placeholder="模糊检索:公司名称,公司编码"]').send_keys(Keys.ENTER) + chrome.find_element_by_xpath('(//span[@class="el-radio__inner"])[1]').click() + + chrome.find_element_by_xpath('//span[@class="ensureBtn"]/button').click() + chrome.find_element_by_xpath('//button[@class="el-button el-button--primary el-button--mini"]').click() + chrome.find_element_by_xpath('//div[text()="出库仓库 "]/following-sibling::div/div/div/div/div/div/div/div/span/span/i').click() + chrome.find_element_by_xpath('//input[@placeholder="模糊检索:仓库编码,仓库名称,是否传WMS,所属公司名称"]').send_keys('北京强生非') + chrome.find_element_by_xpath('//input[@placeholder="模糊检索:仓库编码,仓库名称,是否传WMS,所属公司名称"]').send_keys(Keys.ENTER) + # chrome.find_element_by_xpath('//span/input[@type="radio" and @value="03105272b49986351ef7eb2930b5454de"]').click() + btn_div= chrome.find_element_by_xpath('//span/input[@type="radio" and @value="03105272b49986351ef7eb2930b5454de"]') + chrome.execute_script("arguments[0].click();", btn_div) + chrome.find_element_by_xpath('(//button[@class="el-button el-button--primary el-button--default"])[3]').click() + sleep(1) + chrome.find_element_by_xpath('//div[text()="客户及合同信息"]').click() + chrome.find_element_by_xpath( + '//div[text()="合同号 "]/following-sibling::div/div/div/div/div/div/div/div/span/span/i').click() + chrome.find_element_by_xpath('//input[@placeholder="模糊检索:合同号,合同协议号,对方编码,项目名称,项目编码,业态编码,参考部门,参考部门编码,参考业务员,参考业务员编码,产品线名称,产品线编码,合同类型,合同属性"]').send_keys('38443') + chrome.find_element_by_xpath('//input[@placeholder="模糊检索:合同号,合同协议号,对方编码,项目名称,项目编码,业态编码,参考部门,参考部门编码,参考业务员,参考业务员编码,产品线名称,产品线编码,合同类型,合同属性"]').send_keys(Keys.ENTER) + chrome.find_element_by_xpath('//div[@class="multiple-header string_col" and text()="38443"]/ancestor-or-self::td/preceding-sibling::td/div/label/span/span').click() + chrome.find_element_by_xpath('(//button[@class="el-button el-button--primary el-button--default"])[4]').click() + #业务员名称 + chrome.find_element_by_xpath( + '//div[text()="业务员名称 "]/following-sibling::div/div/div/div/div/div/div/div/span/span/i').click() + chrome.find_element_by_xpath('//input[@placeholder="模糊检索:业务员名称,业务员编码,业务部门名称,业务部门编码,部门类型编码"]').send_keys('杨春刚') + chrome.find_element_by_xpath('//input[@placeholder="模糊检索:业务员名称,业务员编码,业务部门名称,业务部门编码,部门类型编码"]').send_keys(Keys.ENTER) + chrome.find_element_by_xpath('(//div[text()="杨春刚"])[3]/ancestor-or-self::td/preceding-sibling::td/div/label/span/span').click() + chrome.find_element_by_xpath('(//span[@class="ensureBtn"]/button[1])[4]').click() + #其他信息页签 + chrome.find_element_by_xpath('//div[text()="其他信息"]').click() + chrome.find_element_by_xpath('//div[@cid="AWSUI.SwitchButton"]//div/div/div/div/span[1]').click() + # 子表信息录入 + chrome.find_element_by_xpath('//div[text()="主体信息"]').click() + + # 点击添加商品弹出添加商品子窗口 + chrome.find_element_by_xpath('//button[text()="导入"]').click() + sleep(1) + # chrome.find_element_by_xpath('//span[text()="上传Excel文件"]').click() + sleep(1) + element = chrome.find_element_by_class_name('upload__text') + chrome.execute_script("arguments[0].click();", element) + sleep(1) + chrome.find_element_by_class_name('el-upload__text').send_keys(r'D:\PycharmProjects\骨科库存占用专项测试\testcase\od\销售订单明细8.xls') + sleep(1) + # for i in range(1): + # chrome.find_element_by_xpath('//span[text()="添加商品"]').click() + # add_goods('PTCA',chrome) + # chrome.find_element_by_xpath('(//div[@class="el-dialog__body"]/div[2]/span/button[1]/span)[5]').click() + # sleep(10) + # for i in range(1): + # chrome.find_element_by_xpath('//span[text()="添加商品"]').click() + # add_goods('PTCA', chrome) + # chrome.find_element_by_xpath('(//div[@class="el-dialog__body"]/div[2]/span/button[1]/span)[5]').click() + # sleep(10) + + # chrome.find_element_by_xpath('//span[text()="添加商品"]').click() + # chrome.find_element_by_xpath( + # '//input[@placeholder="模糊检索:商品编码,商品名称,规格型号,主计量单位,销售计量单位,厂家物料编码,存储条件说明,生产企业编码,供应商编码,行类型,商品性质,批发价,进口/国产/港澳台,件包数,产品备注,是否免备案,产品描述"]').send_keys( + # 'PTCA') + # chrome.find_element_by_xpath( + # '//input[@placeholder="模糊检索:商品编码,商品名称,规格型号,主计量单位,销售计量单位,厂家物料编码,存储条件说明,生产企业编码,供应商编码,行类型,商品性质,批发价,进口/国产/港澳台,件包数,产品备注,是否免备案,产品描述"]').send_keys( + # Keys.ENTER) + # sleep(1) + # chrome.find_element_by_xpath('//th[@class="el-table_18_column_229 multiple-column el-table-column--selection is-leaf headerCellClassName el-table__cell"]/div/label/span/span').click() + # chrome.find_element_by_xpath('(//div[@class="el-dialog__body"]/div[2]/span/button[1]/span)[5]').click() + # sleep(2) + sleep(6) + for i in range(1,101): + element = chrome.find_element_by_xpath('(//td[@colid="col_177"])[%s]'%i) + chrome.execute_script("arguments[0].click();", element) + + # element=chrome.find_element_by_xpath('(//td[@colid="col_177"])[%s]'%i) + # element.click() + sleep(2) + # element.send_keys("1") + # chrome.execute_script("document.getElementsByClassName('awsui-input-number-right')[0].value='1'") + chrome.find_element_by_class_name('awsui-input-number-right').send_keys('1') + # chrome.find_element_by_xpath('//td[@colid="col_177"]/div/div').send_keys('1') + sleep(2) + # chrome.find_element_by_xpath('(//td[@colid="col_178"])[%s]'%i).click() + element = chrome.find_element_by_xpath('(//td[@colid="col_178"])[%s]' % i) + chrome.execute_script("arguments[0].click();", element) + sleep(2) + + #滚动条右拉 + # document.getElementsByClassName('vxe-table--footer-wrapper body--wrapper')[0].scrollLeft = 5000 + chrome.execute_script("document.getElementsByClassName('vxe-table--footer-wrapper body--wrapper')[0].scrollLeft = 2000"); + for i in range(1,101): + element = chrome.find_element_by_xpath('(//td[@colid="col_197"])[%s]'%i) + element.click() + sleep(2) + chrome.execute_script("document.getElementsByClassName('awsui-input-number-right')[0].value='8'") + sleep(2) + element = chrome.find_element_by_xpath('(//td[@colid="col_198"])[%s]'%i) + element.click() + sleep(2) + chrome.execute_script("document.getElementsByClassName('awsui-input-number-right')[0].value='8'") + sleep(2) + # lock = threading.Lock() + # lock.acquire() + start = time.clock() + #方案一============================开始 + if type==1: + import datetime + now = datetime.datetime.now() + one_minutes_later = now + datetime.timedelta(minutes=1) + now = now.strftime('%Y-%m-%d %H:%M') + one_minutes_later = one_minutes_later.strftime('%Y-%m-%d %H:%M') + # print('bbbbbbbb'+one_minutes_later) + while True: + now = datetime.datetime.now().strftime('%Y-%m-%d %H:%M') + # print('变化的时间' + now) + if now == one_minutes_later: + print('时间到了') + # global start + start = time.clock() + chrome.find_element_by_xpath('//span[text()="提交"]').click() + break + # 方案一============================结束 + #方案二===============开始 + if type==2: + m=get_time_m() #当前时间的分钟 + m1=get_submit_time(m)#计划提交时间的分钟 + print('销售订单计划提交时间的分钟',m1) + while True: + m2=get_time_m() #循环获取当前的分 + # sleep(30) + if (m2==m1): + start = time.clock() + chrome.find_element_by_xpath('//span[text()="提交"]').click() + break + #方案二===============结束 + # lock.release() + sleep(2) + # chrome.find_element_by_xpath('//button[@class="el-button el-button--primary el-button--mini awsui-button awsui-button--primary"]//span[text()="确定"]').click() + chrome.switch_to.default_content() + chrome.switch_to.frame(chrome.find_element_by_xpath('(//iframe[@class="metro-main-frame"])[2]')) + sleep(20) + while True: + try: + if chrome.find_element_by_xpath('(//span[text()="%s"])[2]'%orderno).is_displayed()==True: + print('//span[text()="%s"]'%orderno) + break + except: + continue + print('销售订单创建完成') + end = time.clock() + print(start, end) + imgInfo = getErrorPhoto(chrome) + imgName = imgInfo[0] + image_path = imgInfo[1] + info=orderno+'执行耗时'+str(end - start) + now = get_time() + writeFile_append(pro_path + '/logs/catalina.out', info) + send_email1(image_path, info) + print('CPU执行时间: ', end - start) + except Exception as e: + print('出现异常') + # 将日志写入到文件中单独存储 + pro_path = get_pro_path() + traceback.print_exc() + imgInfo = getErrorPhoto(chrome) + imgName = imgInfo[0] + image_path = imgInfo[1] + print(imgName, image_path) + print(repr(e)) + info = repr(e) + now = get_time() + writeFile_append(pro_path + '/logs/logerror%s.txt' % now, info) + # send_email1(image_path, info) +if __name__ == "__main__": + # 创建多线程时, 需要制定该线程执行的任务.name线程名字 target目标函数名 + # t1 = threading.Thread(target=job,name="job1") + # t2 = threading.Thread(target=job,name="job2") + # t1.start() + # t2.start() + # opt = ChromeOptions() # 创建 Chrome 参数对象 + # # opt.headless = True # 把 Chrome 设置成无界面模式,windows/Linux 皆可 + # opt.headless = False # 把 Chrome 设置成无界面模式,windows/Linux 皆可 + # opt.add_argument('--start-maximized') + # opt.add_argument('--window-size=1280x1024') + # # chrome = Chrome(options=opt) # 创建无界面对象 + # chrome = WebChrome(chrome_options=opt) # airtest中的类 + + count=1 + for i in range(count): + t = threading.Thread(target=job) + t.start() + t.join() + +def start1(): + count = 1 + for i in range(count): + t = threading.Thread(target=job) + t.start() + t.join() + + # print(threading.active_count()) + # print("程序执行结束.....") + # create_salesorder() diff --git "a/testcase/od/\345\244\232\346\230\216\347\273\206/\351\224\200\345\224\256\350\256\242\345\215\225_\345\244\232\346\230\216\347\273\20650.py" "b/testcase/od/\345\244\232\346\230\216\347\273\206/\351\224\200\345\224\256\350\256\242\345\215\225_\345\244\232\346\230\216\347\273\20650.py" new file mode 100644 index 0000000000000000000000000000000000000000..c6aac9e7c35a8001b5cf822ae0788caf8d8bd5b9 --- /dev/null +++ "b/testcase/od/\345\244\232\346\230\216\347\273\206/\351\224\200\345\224\256\350\256\242\345\215\225_\345\244\232\346\230\216\347\273\20650.py" @@ -0,0 +1,389 @@ +import datetime +import threading +import time +import traceback + +from airtest.core.api import * +from selenium import webdriver +from selenium.webdriver import DesiredCapabilities +from selenium.webdriver.common.keys import Keys +from airtest_selenium.proxy import * +from selenium.webdriver import Chrome, ChromeOptions +from airtest.core.api import * +from airtest_selenium.proxy import * + +from mail1 import send_email1 +from public.tools import * + + + + +# chrome = webdriver.Chrome(chrome_options=opt) + +def job(): + print("这是一个需要执行的任务。。。。。") + create_salesorder() + print("当前线程的个数:", threading.active_count()) + time.sleep(1) + print("当前线程的信息:", threading.current_thread()) +def add_goods(goodsname,chrome): + chrome.find_element_by_xpath( + '//input[@placeholder="模糊检索:商品编码,商品名称,规格型号,主计量单位,销售计量单位,厂家物料编码,存储条件说明,生产企业编码,供应商编码,行类型,商品性质,批发价,进口/国产/港澳台,件包数,产品备注,是否免备案,产品描述"]').send_keys( + goodsname) + chrome.find_element_by_xpath( + '//input[@placeholder="模糊检索:商品编码,商品名称,规格型号,主计量单位,销售计量单位,厂家物料编码,存储条件说明,生产企业编码,供应商编码,行类型,商品性质,批发价,进口/国产/港澳台,件包数,产品备注,是否免备案,产品描述"]').send_keys( + Keys.ENTER) + #获取页数 + # pagecount=chrome.find_element_by_xpath('(// li[ @class ="number"])[16]').text + pagecount=5 + for i in range(int(pagecount)): + # chrome.find_element_by_xpath('//span[text()="添加商品"]').click() + # chrome.find_element_by_xpath( + # '//input[@placeholder="模糊检索:商品编码,商品名称,规格型号,主计量单位,销售计量单位,厂家物料编码,存储条件说明,生产企业编码,供应商编码,行类型,商品性质,批发价,进口/国产/港澳台,件包数,产品备注,是否免备案,产品描述"]').send_keys( + # goodsname) + # chrome.find_element_by_xpath( + # '//input[@placeholder="模糊检索:商品编码,商品名称,规格型号,主计量单位,销售计量单位,厂家物料编码,存储条件说明,生产企业编码,供应商编码,行类型,商品性质,批发价,进口/国产/港澳台,件包数,产品备注,是否免备案,产品描述"]').send_keys( + # Keys.ENTER) + sleep(1) + chrome.find_element_by_xpath( + '//th[@class="el-table_18_column_269 multiple-column el-table-column--selection is-leaf headerCellClassName el-table__cell"]/div/label/span/span').click() + #翻页 + chrome.find_element_by_xpath('(//button[@class="btn-next is-last"])[6]').click() + + #点击确定 + # chrome.find_element_by_xpath('(//div[@class="el-dialog__body"]/div[2]/span/button[1]/span)[5]').click() + sleep(2) +def create_salesorder(type=1): + try: + import time + pro_path = get_pro_path() + # start = time.clock() + # caps = DesiredCapabilities().CHROME + # caps["pageLoadStrategy"] = "normal" # complete + # caps["pageLoadStrategy"] = "eager" # interactive + # caps["pageLoadStrategy"] = "none" + # chrome = webdriver.Chrome(desired_capabilities=caps) + opt = ChromeOptions() # 创建 Chrome 参数对象 + # opt.headless = True # 把 Chrome 设置成无界面模式,windows/Linux 皆可 + opt.headless = False # 把 Chrome 设置成无界面模式,windows/Linux 皆可 + opt.add_argument('--start-maximized') + opt.add_argument('--window-size=1280x1024') + # chrome = Chrome(options=opt) # 创建无界面对象 + # chrome = WebChrome(chrome_options=opt) + chrome = WebChrome(chrome_options=opt) + # chrome=webdriver.Chrome() + chrome.implicitly_wait(20) + chrome.get("http://10.17.65.200:8088/portal/") + # chrome.get("http://10.17.65.207:8088/uat/r/w") + sleep(2) + chrome.implicitly_wait(30) + # chrome.maximize_window() + chrome.find_element_by_id('input1').clear() + chrome.find_element_by_id('input1').send_keys('admin') + chrome.find_element_by_id('input2').clear() + chrome.find_element_by_id('input2').send_keys('Gyxc1234') + chrome.find_element_by_id('input2').send_keys(Keys.ENTER) + while True: + try: + if(chrome.find_element_by_xpath('//span[text()="退出"]').is_displayed()==True): + break + except: + continue + #切换所属公司 + chrome.find_element_by_class_name('changeCom').click() + sleep(1) + chrome.find_element_by_xpath('//span[text()="国药集团北京医疗器械有限公司"]/following-sibling::button').click() + sleep(1) + chrome.find_element_by_xpath('// button[text() = "确定"]').click() + sleep(1) + # chrome.find_element_by_xpath('//div[text()="销售管理"]').click() + # actions = ActionChains(chrome) + # actions.move_to_element(chrome.find_element_by_xpath('//div[text()="销售业务"]')).perform() + # chrome.find_element_by_xpath('//span[text()="销售订单"]').click() + order_link = chrome.find_element_by_xpath('//span[text()="销售订单"]') + chrome.execute_script("arguments[0].click();", order_link) + chrome.switch_to.frame(chrome.find_element_by_xpath('(//iframe[@class="metro-main-frame"])[2]')) + sleep(4) + chrome.find_element_by_xpath('//span[text()="新建"]').click() + sleep(4) + chrome.switch_to.frame(chrome.find_element_by_xpath('//iframe[contains(@name,"awsui-dialog-iframe")]')) + #获取订单号 + + orderno=chrome.find_element_by_xpath('//div[text() = "销售订单号 "]/following-sibling::div/span').text + print(orderno) + # chrome.switch_to.default_content() + sleep(4) + # while True: + # try: + # if chrome.find_element_by_xpath('//div[text()="订单公司名称 "]').is_displayed(): + # print(chrome.find_element_by_xpath('//div[text()="订单公司名称 "]').text) + # break + # except: + # continue + print(chrome.find_element_by_xpath('//div[text()="订单公司名称 "]').text) + + + sleep(2) + # chrome.find_element_by_xpath( + # '//div[text()="订单公司名称 "]/following-sibling::div/div/div/div/div/div/div/div/span/span/i').click() + # chrome.find_element_by_xpath('//input[@placeholder="模糊检索:公司名称,公司编码"]').send_keys('国药集团北京') + # chrome.find_element_by_xpath('//input[@placeholder="模糊检索:公司名称,公司编码"]').send_keys(Keys.ENTER) + # chrome.find_element_by_xpath('(//span[@class="el-radio__inner"])[1]').click() + + # chrome.find_element_by_xpath('//span[@class="ensureBtn"]/button').click() + # chrome.find_element_by_xpath('//button[@class="el-button el-button--primary el-button--mini"]').click() + + chrome.find_element_by_xpath('//div[text()="出库仓库 "]/following-sibling::div/div/div/div/div/div/div/div/span/span/i').click() + chrome.find_element_by_xpath('//input[@placeholder="模糊检索:仓库编码,仓库名称,是否传WMS,所属公司名称"]').send_keys('北京强生非') + chrome.find_element_by_xpath('//input[@placeholder="模糊检索:仓库编码,仓库名称,是否传WMS,所属公司名称"]').send_keys(Keys.ENTER) + # chrome.find_element_by_xpath('//span/input[@type="radio" and @value="03105272b49986351ef7eb2930b5454de"]').click() + btn_div= chrome.find_element_by_xpath('//span/input[@type="radio" and @value="03105272b49986351ef7eb2930b5454de"]') + chrome.execute_script("arguments[0].click();", btn_div) + chrome.find_element_by_xpath('(//button[@class="el-button el-button--primary el-button--default"])[2]').click() + sleep(1) + chrome.find_element_by_xpath('//div[text()="客户及合同信息"]').click() + chrome.find_element_by_xpath( + '//div[text()="合同号 "]/following-sibling::div/div/div/div/div/div/div/div/span/span/i').click() + chrome.find_element_by_xpath('//input[@placeholder="模糊检索:合同号,合同协议号,对方编码,项目名称,项目编码,业态编码,参考部门,参考部门编码,参考业务员,参考业务员编码,产品线名称,产品线编码,合同类型,合同属性"]').send_keys('38443') + chrome.find_element_by_xpath('//input[@placeholder="模糊检索:合同号,合同协议号,对方编码,项目名称,项目编码,业态编码,参考部门,参考部门编码,参考业务员,参考业务员编码,产品线名称,产品线编码,合同类型,合同属性"]').send_keys(Keys.ENTER) + chrome.find_element_by_xpath('//div[@class="multiple-header string_col" and text()="38443"]/ancestor-or-self::td/preceding-sibling::td/div/label/span/span').click() + chrome.find_element_by_xpath('(//button[@class="el-button el-button--primary el-button--default"])[3]').click() + #客户名称 + chrome.find_element_by_xpath( + '//div[text()="客户名称 "]/following-sibling::div/div/div/div/div/div/div/div/span/span/i').click() + + chrome.find_element_by_xpath( + '//input[@placeholder="模糊检索:客户编码,客户名称,收货地址号,收货地址信息,公司编码,货币码,税率/税区,客户分类,联系人,联系人电话"]').send_keys( + '1000486') + chrome.find_element_by_xpath( + '//input[@placeholder="模糊检索:客户编码,客户名称,收货地址号,收货地址信息,公司编码,货币码,税率/税区,客户分类,联系人,联系人电话"]').send_keys( + Keys.ENTER) + chrome.find_element_by_xpath( + '//div[@class="multiple-header number_col" and text()="1000486"]/ancestor-or-self::td/preceding-sibling::td/div/label/span/span').click() + chrome.find_element_by_xpath('(//button[@class="el-button el-button--primary el-button--default"])[4]').click() + + #业务员名称 + chrome.find_element_by_xpath( + '//div[text()="业务员名称 "]/following-sibling::div/div/div/div/div/div/div/div/span/span/i').click() + chrome.find_element_by_xpath('//input[@placeholder="模糊检索:业务员名称,业务员编码,业务部门名称,业务部门编码,部门类型编码"]').send_keys('杨春刚') + chrome.find_element_by_xpath('//input[@placeholder="模糊检索:业务员名称,业务员编码,业务部门名称,业务部门编码,部门类型编码"]').send_keys(Keys.ENTER) + chrome.find_element_by_xpath('(//div[text()="杨春刚"])[3]/ancestor-or-self::td/preceding-sibling::td/div/label/span/span').click() + chrome.find_element_by_xpath('(//span[@class="ensureBtn"]/button[1])[4]').click() + #其他信息页签 + chrome.find_element_by_xpath('//div[text()="其他信息"]').click() + chrome.find_element_by_xpath('//div[@cid="AWSUI.SwitchButton"]//div/div/div/div/span[1]').click() + # 子表信息录入 + chrome.find_element_by_xpath('//div[text()="主体信息"]').click() + + # 点击添加商品弹出添加商品子窗口 + for i in range(1): + chrome.find_element_by_xpath('//span[text()="添加商品"]').click() + add_goods('PTCA',chrome) + chrome.find_element_by_xpath('(//div[@class="el-dialog__body"]/div[2]/span/button[1]/span)[5]').click() + sleep(20) + # for i in range(1): + # chrome.find_element_by_xpath('//span[text()="添加商品"]').click() + # add_goods('PTCA', chrome) + # chrome.find_element_by_xpath('(//div[@class="el-dialog__body"]/div[2]/span/button[1]/span)[5]').click() + # sleep(10) + + # chrome.find_element_by_xpath('//span[text()="添加商品"]').click() + # chrome.find_element_by_xpath( + # '//input[@placeholder="模糊检索:商品编码,商品名称,规格型号,主计量单位,销售计量单位,厂家物料编码,存储条件说明,生产企业编码,供应商编码,行类型,商品性质,批发价,进口/国产/港澳台,件包数,产品备注,是否免备案,产品描述"]').send_keys( + # 'PTCA') + # chrome.find_element_by_xpath( + # '//input[@placeholder="模糊检索:商品编码,商品名称,规格型号,主计量单位,销售计量单位,厂家物料编码,存储条件说明,生产企业编码,供应商编码,行类型,商品性质,批发价,进口/国产/港澳台,件包数,产品备注,是否免备案,产品描述"]').send_keys( + # Keys.ENTER) + # sleep(1) + # chrome.find_element_by_xpath('//th[@class="el-table_18_column_229 multiple-column el-table-column--selection is-leaf headerCellClassName el-table__cell"]/div/label/span/span').click() + # chrome.find_element_by_xpath('(//div[@class="el-dialog__body"]/div[2]/span/button[1]/span)[5]').click() + # sleep(2) + sleep(6) + for i in range(1,51): + if i==50: + print('50为什么有问题') + + # element = chrome.find_element_by_xpath('(//td[@colid="col_177"])[%s]'%i) + # chrome.execute_script("arguments[0].click();", element) + + # element=chrome.find_element_by_xpath('(//td[@colid="col_177"])[%s]'%i) + # element.click() + element=chrome.find_element_by_xpath('//span[@class="form-grid-check-num" and text()="%s"]/ancestor::td/following-sibling::td[5]'%i) + element.click() + sleep(2) + # element.send_keys("1") + # chrome.execute_script("document.getElementsByClassName('awsui-input-number-right')[0].value='1'") + chrome.find_element_by_class_name('awsui-input-number-right').send_keys('1') + # chrome.find_element_by_xpath('//td[@colid="col_177"]/div/div').send_keys('1') + sleep(2) + # chrome.find_element_by_xpath('(//td[@colid="col_178"])[%s]'%i).click() + # element = chrome.find_element_by_xpath('(//td[@colid="col_178"])[%s]' % i) + # chrome.execute_script("arguments[0].click();", element) + element = chrome.find_element_by_xpath( + '//span[@class="form-grid-check-num" and text()="%s"]/ancestor::td/following-sibling::td[6]' % i) + element.click() + sleep(2) + + # print('200条输入完毕') + # chrome.find_element_by_xpath('//button[@ class="vxe-pager--next-btn" and @title="下一页"]').click() + # # sleep(2) + # chrome.execute_script( + # "document.getElementsByClassName('vxe-table--body-wrapper body--wrapper')[0].scrollTop=0;") + + #输入第二页数据 + # for i in range(1,51): + # + # # element = chrome.find_element_by_xpath('(//td[@colid="col_177"])[%s]'%i) + # # chrome.execute_script("arguments[0].click();", element) + # + # # element=chrome.find_element_by_xpath('(//td[@colid="col_177"])[%s]'%i) + # # element.click() + # element=chrome.find_element_by_xpath('//span[@class="form-grid-check-num" and text()="%s"]/ancestor::td/following-sibling::td[5]'%i) + # element.click() + # sleep(2) + # # element.send_keys("1") + # # chrome.execute_script("document.getElementsByClassName('awsui-input-number-right')[0].value='1'") + # chrome.find_element_by_class_name('awsui-input-number-right').send_keys('1') + # # chrome.find_element_by_xpath('//td[@colid="col_177"]/div/div').send_keys('1') + # sleep(2) + # # chrome.find_element_by_xpath('(//td[@colid="col_178"])[%s]'%i).click() + # # element = chrome.find_element_by_xpath('(//td[@colid="col_178"])[%s]' % i) + # # chrome.execute_script("arguments[0].click();", element) + # element = chrome.find_element_by_xpath( + # '//span[@class="form-grid-check-num" and text()="%s"]/ancestor::td/following-sibling::td[6]' % i) + # element.click() + # sleep(2) + print('ok') + + #滚动条右拉 + # document.getElementsByClassName('vxe-table--footer-wrapper body--wrapper')[0].scrollLeft = 5000 + # chrome.execute_script("document.getElementsByClassName('vxe-table--footer-wrapper body--wrapper')[0].scrollLeft = 2000;") + # sleep(1) + #右侧滚动条向上 + # chrome.execute_script("document.getElementsByClassName('vxe-table--body-wrapper body--wrapper')[0].scrollTop=0;") + # for i in range(1,201): + # element = chrome.find_element_by_xpath('(//td[@colid="col_197"])[%s]'%i) + # element.click() + # sleep(2) + # chrome.execute_script("document.getElementsByClassName('awsui-input-number-right')[0].value='8'") + # sleep(2) + # element = chrome.find_element_by_xpath('(//td[@colid="col_198"])[%s]'%i) + # element.click() + # sleep(2) + # chrome.execute_script("document.getElementsByClassName('awsui-input-number-right')[0].value='8'") + # sleep(2) + # lock = threading.Lock() + # lock.acquire() + start = time.clock() + #方案一============================开始 + if type==1: + import datetime + now = datetime.datetime.now() + one_minutes_later = now + datetime.timedelta(minutes=1) + now = now.strftime('%Y-%m-%d %H:%M') + one_minutes_later = one_minutes_later.strftime('%Y-%m-%d %H:%M') + # print('bbbbbbbb'+one_minutes_later) + while True: + now = datetime.datetime.now().strftime('%Y-%m-%d %H:%M') + # print('变化的时间' + now) + if now == one_minutes_later: + print('时间到了') + # global start + start = time.clock() + chrome.find_element_by_xpath('//span[text()="提交"]').click() + break + # 方案一============================结束 + #方案二===============开始 + if type==2: + m=get_time_m() #当前时间的分钟 + m1=get_submit_time(m)#计划提交时间的分钟 + print('销售订单计划提交时间的分钟',m1) + while True: + m2=get_time_m() #循环获取当前的分 + # sleep(30) + if (m2==m1): + chrome.find_element_by_xpath('//span[text()="保存"]').click() + start = time.clock() + chrome.find_element_by_xpath('//span[text()="提交"]').click() + break + #方案二===============结束 + while True: + try: + if chrome.find_element_by_xpath('//p[text()="共享任务创建成功"]').is_displayed() == True: + print('订单完成了') + break + else: + print('共享任务创建成功的元素没有出现') + except: + continue + # lock.release() + # sleep(2) + # chrome.find_element_by_xpath('//button[@class="el-button el-button--primary el-button--mini awsui-button awsui-button--primary"]//span[text()="确定"]').click() + chrome.switch_to.default_content() + chrome.switch_to.frame(chrome.find_element_by_xpath('(//iframe[@class="metro-main-frame"])[2]')) + # sleep(60) + while True: + try: + # if chrome.find_element_by_xpath('(//span[text()="%s"])[2]'%orderno).is_displayed()==True: + if chrome.find_element_by_xpath( + '//span[text() = "1"]/ancestor-or-self::td/following-sibling::td/div/span').is_displayed() == True: + print('aaaaaaaaaaaaaaaaaaaaaaaa', chrome.find_element_by_xpath( + '//span[text() = "1"]/ancestor-or-self::td/following-sibling::td/div/span').text) + break + except: + continue + print('销售订单创建完成') + end = time.clock() + print(start, end) + imgInfo = getErrorPhoto(chrome) + imgName = imgInfo[0] + image_path = imgInfo[1] + info=orderno+'执行耗时'+str(end - start) + now = get_time() + writeFile_append(pro_path + '/logs/catalina.out', info) + send_email1(image_path, info) + print('CPU执行时间: ', end - start) + except Exception as e: + print('出现异常') + # 将日志写入到文件中单独存储 + pro_path = get_pro_path() + traceback.print_exc() + imgInfo = getErrorPhoto(chrome) + imgName = imgInfo[0] + image_path = imgInfo[1] + print(imgName, image_path) + print(repr(e)) + info = repr(e) + now = get_time() + writeFile_append(pro_path + '/logs/logerror%s.txt' % now, info) + # send_email1(image_path, info) +if __name__ == "__main__": + # 创建多线程时, 需要制定该线程执行的任务.name线程名字 target目标函数名 + # t1 = threading.Thread(target=job,name="job1") + # t2 = threading.Thread(target=job,name="job2") + # t1.start() + # t2.start() + # opt = ChromeOptions() # 创建 Chrome 参数对象 + # # opt.headless = True # 把 Chrome 设置成无界面模式,windows/Linux 皆可 + # opt.headless = False # 把 Chrome 设置成无界面模式,windows/Linux 皆可 + # opt.add_argument('--start-maximized') + # opt.add_argument('--window-size=1280x1024') + # # chrome = Chrome(options=opt) # 创建无界面对象 + # chrome = WebChrome(chrome_options=opt) # airtest中的类 + + count=1 + for i in range(count): + t = threading.Thread(target=job) + t.start() + t.join() + +def start1(): + count = 1 + for i in range(count): + t = threading.Thread(target=job) + t.start() + t.join() + + # print(threading.active_count()) + # print("程序执行结束.....") + # create_salesorder() diff --git "a/testcase/od/\345\244\232\346\230\216\347\273\206/\351\224\200\345\224\256\350\256\242\345\215\225\346\230\216\347\273\2068.xls" "b/testcase/od/\345\244\232\346\230\216\347\273\206/\351\224\200\345\224\256\350\256\242\345\215\225\346\230\216\347\273\2068.xls" new file mode 100644 index 0000000000000000000000000000000000000000..24b559a7a47d7cde5eed7e566448a532bc4ea8ae Binary files /dev/null and "b/testcase/od/\345\244\232\346\230\216\347\273\206/\351\224\200\345\224\256\350\256\242\345\215\225\346\230\216\347\273\2068.xls" differ diff --git "a/testcase/od/\345\257\204\345\224\256\345\200\237\345\207\272\345\215\225.py" "b/testcase/od/\345\257\204\345\224\256\345\200\237\345\207\272\345\215\225.py" new file mode 100644 index 0000000000000000000000000000000000000000..05ab6f1ec128379da29e52cd164c0c5c380a1771 --- /dev/null +++ "b/testcase/od/\345\257\204\345\224\256\345\200\237\345\207\272\345\215\225.py" @@ -0,0 +1,306 @@ +import datetime +import threading +import time +import traceback + +from airtest.core.api import * +from selenium import webdriver +from selenium.webdriver import DesiredCapabilities +from selenium.webdriver.common.keys import Keys +from airtest_selenium.proxy import * +from selenium.webdriver import Chrome, ChromeOptions +from airtest.core.api import * +from airtest_selenium.proxy import * + +from mail1 import send_email1 +from public.tools import * + + + + +# chrome = webdriver.Chrome(chrome_options=opt) + +def job(): + print("这是一个需要执行的任务。。。。。") + create_salesorder() + print("当前线程的个数:", threading.active_count()) + time.sleep(1) + print("当前线程的信息:", threading.current_thread()) + + +def create_salesorder(type=1): + try: + import time + pro_path = get_pro_path() + start = time.clock() + # caps = DesiredCapabilities().CHROME + # caps["pageLoadStrategy"] = "normal" # complete + # caps["pageLoadStrategy"] = "eager" # interactive + # caps["pageLoadStrategy"] = "none" + # chrome = webdriver.Chrome(desired_capabilities=caps) + opt = ChromeOptions() # 创建 Chrome 参数对象 + # opt.headless = True # 把 Chrome 设置成无界面模式,windows/Linux 皆可 + opt.headless = False # 把 Chrome 设置成无界面模式,windows/Linux 皆可 + opt.add_argument('--start-maximized') + opt.add_argument('--window-size=1280x1024') + # chrome = Chrome(options=opt) # 创建无界面对象 + # chrome = WebChrome(chrome_options=opt) + chrome = WebChrome(chrome_options=opt) + # chrome=webdriver.Chrome() + chrome.implicitly_wait(20) + chrome.get("http://10.17.65.200:8088/portal/") + # chrome.get("http://10.17.65.207:8088/uat/r/w") + sleep(2) + chrome.implicitly_wait(30) + chrome.maximize_window() + chrome.find_element_by_id('input1').clear() + chrome.find_element_by_id('input1').send_keys('admin') + chrome.find_element_by_id('input2').clear() + chrome.find_element_by_id('input2').send_keys('Gyxc1234') + chrome.find_element_by_id('input2').send_keys(Keys.ENTER) + while True: + try: + if(chrome.find_element_by_xpath('//span[text()="退出"]').is_displayed()==True): + break + except: + continue + # 切换所属公司 + chrome.find_element_by_class_name('changeCom').click() + sleep(1) + chrome.find_element_by_xpath('//span[text()="国药集团北京医疗器械有限公司"]/following-sibling::button').click() + sleep(1) + chrome.find_element_by_xpath('// button[text() = "确定"]').click() + sleep(1) + # chrome.find_element_by_xpath('//div[text()="销售管理"]').click() + # actions = ActionChains(chrome) + # actions.move_to_element(chrome.find_element_by_xpath('//div[text()="销售业务"]')).perform() + # chrome.find_element_by_xpath('//span[text()="销售订单"]').click() + order_link = chrome.find_element_by_xpath('//span[text()="寄售借出单"]') + chrome.execute_script("arguments[0].click();", order_link) + chrome.switch_to.frame(chrome.find_element_by_xpath('(//iframe[@class="metro-main-frame"])[2]')) + sleep(4) + chrome.find_element_by_xpath('//span[text()="新建"]').click() + sleep(4) + chrome.switch_to.frame(chrome.find_element_by_xpath('//iframe[contains(@name,"awsui-dialog-iframe")]')) + #获取订单号 + + orderno=chrome.find_element_by_xpath('//div[text() = "订单号 "]/following-sibling::div/span').text + print(orderno) + # chrome.switch_to.default_content() + sleep(4) + # while True: + # try: + # if chrome.find_element_by_xpath('//div[text()="订单公司名称 "]').is_displayed(): + # print(chrome.find_element_by_xpath('//div[text()="订单公司名称 "]').text) + # break + # except: + # continue + # print(chrome.find_element_by_xpath('//div[text()="订单公司名称 "]').text) + + + # sleep(2) + # chrome.find_element_by_xpath( + # '//div[text()="公司名称 "]/following-sibling::div/div/div/div/div/div/div/div/span/span/i').click() + # chrome.find_element_by_xpath('//input[@placeholder="模糊检索:公司名称,公司编码"]').send_keys('国药集团北京') + # chrome.find_element_by_xpath('//input[@placeholder="模糊检索:公司名称,公司编码"]').send_keys(Keys.ENTER) + # chrome.find_element_by_xpath('(//span[@class="el-radio__inner"])[2]').click() + # chrome.find_element_by_xpath('//span[@class="ensureBtn"]/button').click() + # chrome.find_element_by_xpath('//button[@class="el-button el-button--primary el-button--mini"]').click() + + # 业务员名称 + chrome.find_element_by_xpath( + '//div[text()="业务员名称 "]/following-sibling::div/div/div/div/div/div/div/div/span/span/i').click() + chrome.find_element_by_xpath('//input[@placeholder="模糊检索:员工编码,员工名称"]').send_keys('杨春刚') + chrome.find_element_by_xpath('//input[@placeholder="模糊检索:员工编码,员工名称"]').send_keys( + Keys.ENTER) + chrome.find_element_by_xpath( + '(//div[text()="杨春刚"])[3]/ancestor-or-self::td/preceding-sibling::td/div/label/span/span').click() + chrome.find_element_by_xpath('(//span[@class="ensureBtn"]/button[1])[1]').click() + + #客户信息页签 + chrome.find_element_by_xpath('//div[text()="客户信息"]').click() + chrome.find_element_by_xpath('//div[text()="客户名称 "]/following-sibling::div/div/div/div/div/div/div/div/span/span/i').click() + chrome.find_element_by_xpath('//input[@placeholder="模糊检索:客户编码,客户名称,收货地址号,收货地址信息,地址名称"]').send_keys('1451') + chrome.find_element_by_xpath('//input[@placeholder="模糊检索:客户编码,客户名称,收货地址号,收货地址信息,地址名称"]').send_keys(Keys.ENTER) + # chrome.find_element_by_xpath('//span/input[@type="radio" and @value="03105272b49986351ef7eb2930b5454de"]').click() + btn_div= chrome.find_element_by_xpath('//span/input[@type="radio" and @value="0b570c63f68dfcc5a40d6a06f6aef07e4"]') + chrome.execute_script("arguments[0].click();", btn_div) + chrome.find_element_by_xpath('(//button[@class="el-button el-button--primary el-button--default"])[3]').click() + #仓库信息页签 + chrome.find_element_by_xpath('//div[text()="仓库信息"]').click() + chrome.find_element_by_xpath( + '//div[text()="借出仓库名称 "]/following-sibling::div/div/div/div/div/div/div/div/span/span/i').click() + chrome.find_element_by_xpath('//input[@placeholder="模糊检索:仓库编码,仓库名称"]').send_keys('103356') + chrome.find_element_by_xpath('//input[@placeholder="模糊检索:仓库编码,仓库名称"]').send_keys(Keys.ENTER) + chrome.find_element_by_xpath('//div[@class="multiple-header string_col" and text()="103356"]/ancestor-or-self::td/preceding-sibling::td/div/label/span/span').click() + chrome.find_element_by_xpath('(//button[@class="el-button el-button--primary el-button--default"])[4]').click() + #借入仓库 + chrome.find_element_by_xpath( + '//div[text()="借入仓库名称 "]/following-sibling::div/div/div/div/div/div/div/div/span/span/i').click() + chrome.find_element_by_xpath('(//input[@placeholder="模糊检索:仓库编码,仓库名称"])[2]').send_keys('103503') + chrome.find_element_by_xpath('(//input[@placeholder="模糊检索:仓库编码,仓库名称"])[2]').send_keys(Keys.ENTER) + chrome.find_element_by_xpath( + '//div[@class="multiple-header string_col" and text()="103503"]/ancestor-or-self::td/preceding-sibling::td/div/label/span/span').click() + chrome.find_element_by_xpath('(//button[@class="el-button el-button--primary el-button--default"])[5]').click() + # #业务员名称 + # chrome.find_element_by_xpath( + # '//div[text()="业务员名称 "]/following-sibling::div/div/div/div/div/div/div/div/span/span/i').click() + # chrome.find_element_by_xpath('//input[@placeholder="模糊检索:业务员名称,业务员编码,业务部门名称,业务部门编码,部门类型编码"]').send_keys('杨春刚') + # chrome.find_element_by_xpath('//input[@placeholder="模糊检索:业务员名称,业务员编码,业务部门名称,业务部门编码,部门类型编码"]').send_keys(Keys.ENTER) + # chrome.find_element_by_xpath('(//div[text()="杨春刚"])[3]/ancestor-or-self::td/preceding-sibling::td/div/label/span/span').click() + # chrome.find_element_by_xpath('(//span[@class="ensureBtn"]/button[1])[4]').click() + # #其他信息页签 + # chrome.find_element_by_xpath('//div[text()="其他信息"]').click() + # chrome.find_element_by_xpath('//div[@cid="AWSUI.SwitchButton"]//div/div/div/div/span[1]').click() + # 子表信息录入 + chrome.find_element_by_xpath('//div[text()="主体信息"]').click() + chrome.find_element_by_xpath('//span[text()="添加商品"]').click() + chrome.find_element_by_xpath( + '//input[@placeholder="模糊检索:商品编码,商品名称,规格型号,厂家物料编码,件包数"]').send_keys( + '10006179') + chrome.find_element_by_xpath( + '//input[@placeholder="模糊检索:商品编码,商品名称,规格型号,厂家物料编码,件包数"]').send_keys( + Keys.ENTER) + chrome.find_element_by_xpath('(//span[@class="el-checkbox__inner"])[4]').click() + chrome.find_element_by_xpath('(//div[@class="el-dialog__body"]/div[2]/span/button[1]/span)[5]').click() + sleep(3) + # 滚动条右拉 + chrome.execute_script("document.getElementsByClassName('vxe-table--footer-wrapper body--wrapper')[0].scrollLeft = 1000"); + element = chrome.find_element_by_xpath('//td[@colid="col_159"]') + element.click() + sleep(3) + # element.send_keys("1") + # chrome.execute_script("document.getElementsByClassName('awsui-input-number-right')[0].value='1'") + chrome.find_element_by_xpath('(//div[@class="el-input el-input--fullScreenSize el-input--prefix el-input--suffix dataDialog awsui-input dataDialog"]/div/span/span)[2]').click() + # chrome.find_element_by_xpath('//div[@class="el-input el-input--fullScreenSize el-input--prefix el-input--suffix dataDialog awsui-input dataDialog"]/div/input').send_keys('23072800OP0237') + chrome.find_element_by_xpath('(//div[text()="合格品"])[3]').click() + sleep(1) + chrome.find_element_by_xpath('(//button[@class="el-button el-button--primary el-button--default"])[9]').click() + sleep(1) + chrome.find_element_by_xpath('//td[@colid="col_160"]').click() + sleep(1) + chrome.execute_script("document.getElementsByClassName('vxe-table--footer-wrapper body--wrapper')[0].scrollLeft = 1500"); + sleep(1) + element=chrome.find_element_by_xpath('//td[@colid="col_165"]') + element.click() + sleep(3) + # element.send_keys("1") + # chrome.execute_script("document.getElementsByClassName('awsui-input-number-right')[0].value='1'") + chrome.find_element_by_class_name('awsui-input-number-right').send_keys('1') + sleep(1) + chrome.find_element_by_xpath('//td[@colid="col_166"]').click() + sleep(1) + #滚动条右拉 + # document.getElementsByClassName('vxe-table--footer-wrapper body--wrapper')[0].scrollLeft = 5000 + # chrome.execute_script("document.getElementsByClassName('vxe-table--footer-wrapper body--wrapper')[0].scrollLeft = 2000"); + # element = chrome.find_element_by_xpath('//td[@colid="col_197"]') + # element.click() + # sleep(6) + # chrome.execute_script("document.getElementsByClassName('awsui-input-number-right')[0].value='8'") + # sleep(2) + # element = chrome.find_element_by_xpath('//td[@colid="col_198"]') + # element.click() + # sleep(6) + # chrome.execute_script("document.getElementsByClassName('awsui-input-number-right')[0].value='8'") + # sleep(2) + # lock = threading.Lock() + # lock.acquire() + #方案一============================开始 + if type==1: + import datetime + now = datetime.datetime.now() + one_minutes_later = now + datetime.timedelta(minutes=1) + now = now.strftime('%Y-%m-%d %H:%M') + one_minutes_later = one_minutes_later.strftime('%Y-%m-%d %H:%M') + # print('bbbbbbbb'+one_minutes_later) + while True: + now = datetime.datetime.now().strftime('%Y-%m-%d %H:%M') + # print('变化的时间' + now) + if now == one_minutes_later: + print('时间到了') + chrome.find_element_by_xpath('//span[text()="提交"]').click() + # sleep(3) + # chrome.find_element_by_xpath('//button[@class="el-button el-button--primary el-button--mini"]').click() + break + # 方案一============================结束 + #方案二===============开始 + if type==2: + m=get_time_m() #当前时间的分钟 + m1=get_submit_time(m)#计划提交时间的分钟 + while True: + m2=get_time_m() #循环获取当前的分 + sleep(10) + if (m2==m1): + chrome.find_element_by_xpath('//span[text()="提交"]').click() + # sleep(3) + # chrome.find_element_by_xpath('//button[@class="el-button el-button--primary el-button--mini"]').click() + break + #方案二===============结束 + # lock.release() + sleep(2) + chrome.find_element_by_xpath('//button[@class="el-button el-button--primary el-button--mini"]').click() + # chrome.switch_to.default_content() + # chrome.switch_to.frame(chrome.find_element_by_xpath('(//iframe[@class="metro-main-frame"])[2]')) + # sleep(20) + while True: + try: + if chrome.find_element_by_xpath('//span[text()="%s"]'%orderno).is_displayed()==True: + print('//span[text()="%s"]'%orderno) + break + except: + continue + print('寄售借出单创建完成') + end = time.clock() + print(start, end) + print('CPU执行时间: ', end - start) + imgInfo = getErrorPhoto(chrome) + imgName = imgInfo[0] + image_path = imgInfo[1] + info=orderno+'执行耗时'+str(end - start) + now = get_time() + writeFile_append(pro_path + '/logs/catalina.out', info) + send_email1(image_path, info) + except Exception as e: + print('出现异常') + # 将日志写入到文件中单独存储 + pro_path = get_pro_path() + traceback.print_exc() + imgInfo = getErrorPhoto(chrome) + imgName = imgInfo[0] + image_path = imgInfo[1] + print(imgName, image_path) + print(repr(e)) + info = repr(e) + now = get_time() + writeFile_append(pro_path + '/logs/logerror%s.txt' % now, info) + # send_email1(image_path, info) +if __name__ == "__main__": + # 创建多线程时, 需要制定该线程执行的任务.name线程名字 target目标函数名 + # t1 = threading.Thread(target=job,name="job1") + # t2 = threading.Thread(target=job,name="job2") + # t1.start() + # t2.start() + # opt = ChromeOptions() # 创建 Chrome 参数对象 + # # opt.headless = True # 把 Chrome 设置成无界面模式,windows/Linux 皆可 + # opt.headless = False # 把 Chrome 设置成无界面模式,windows/Linux 皆可 + # opt.add_argument('--start-maximized') + # opt.add_argument('--window-size=1280x1024') + # # chrome = Chrome(options=opt) # 创建无界面对象 + # chrome = WebChrome(chrome_options=opt) # airtest中的类 + + count=1 + for i in range(count): + t = threading.Thread(target=job) + t.start() + # t.join() + +def start1(): + count = 5 + for i in range(count): + t = threading.Thread(target=job) + t.start() + t.join() + + # print(threading.active_count()) + # print("程序执行结束.....") + # create_salesorder() diff --git "a/testcase/od/\345\257\204\345\224\256\347\224\263\350\257\267\345\215\225.py" "b/testcase/od/\345\257\204\345\224\256\347\224\263\350\257\267\345\215\225.py" new file mode 100644 index 0000000000000000000000000000000000000000..e7aa5436a59bd665780e99c8dcfa5476bb12f7ee --- /dev/null +++ "b/testcase/od/\345\257\204\345\224\256\347\224\263\350\257\267\345\215\225.py" @@ -0,0 +1,352 @@ +import datetime +import threading +import time +import traceback + +from airtest.core.api import * +from selenium import webdriver +from selenium.webdriver import DesiredCapabilities +from selenium.webdriver.common.keys import Keys +from airtest_selenium.proxy import * +from selenium.webdriver import Chrome, ChromeOptions +from airtest.core.api import * +from airtest_selenium.proxy import * + +from mail1 import send_email1 +from public.tools import * + + + + +# chrome = webdriver.Chrome(chrome_options=opt) + +def job(): + print("这是一个需要执行的任务。。。。。") + create_salesorder() + print("当前线程的个数:", threading.active_count()) + time.sleep(1) + print("当前线程的信息:", threading.current_thread()) + + +def create_salesorder(type=1): + try: + import time + pro_path = get_pro_path() + start = time.clock() + # caps = DesiredCapabilities().CHROME + # caps["pageLoadStrategy"] = "normal" # complete + # caps["pageLoadStrategy"] = "eager" # interactive + # caps["pageLoadStrategy"] = "none" + # chrome = webdriver.Chrome(desired_capabilities=caps) + opt = ChromeOptions() # 创建 Chrome 参数对象 + # opt.headless = True # 把 Chrome 设置成无界面模式,windows/Linux 皆可 + opt.headless = False # 把 Chrome 设置成无界面模式,windows/Linux 皆可 + opt.add_argument('--start-maximized') + opt.add_argument('--window-size=1280x1024') + # chrome = Chrome(options=opt) # 创建无界面对象 + # chrome = WebChrome(chrome_options=opt) + chrome = WebChrome(chrome_options=opt) + # chrome=webdriver.Chrome() + chrome.implicitly_wait(20) + chrome.get("http://10.17.65.200:8088/portal/") + # chrome.get("http://10.17.65.207:8088/uat/r/w") + sleep(2) + chrome.implicitly_wait(30) + chrome.maximize_window() + chrome.find_element_by_id('input1').clear() + chrome.find_element_by_id('input1').send_keys('admin') + chrome.find_element_by_id('input2').clear() + chrome.find_element_by_id('input2').send_keys('Gyxc1234') + chrome.find_element_by_id('input2').send_keys(Keys.ENTER) + while True: + try: + if(chrome.find_element_by_xpath('//span[text()="退出"]').is_displayed()==True): + break + except: + continue + # 切换所属公司 + chrome.find_element_by_class_name('changeCom').click() + sleep(1) + chrome.find_element_by_xpath('//span[text()="国药集团北京医疗器械有限公司"]/following-sibling::button').click() + sleep(1) + chrome.find_element_by_xpath('// button[text() = "确定"]').click() + sleep(1) + # chrome.find_element_by_xpath('//div[text()="销售管理"]').click() + # actions = ActionChains(chrome) + # actions.move_to_element(chrome.find_element_by_xpath('//div[text()="销售业务"]')).perform() + # chrome.find_element_by_xpath('//span[text()="销售订单"]').click() + order_link = chrome.find_element_by_xpath('//span[text()="寄售申请单"]') + chrome.execute_script("arguments[0].click();", order_link) + chrome.switch_to.frame(chrome.find_element_by_xpath('(//iframe[@class="metro-main-frame"])[2]')) + sleep(2) + chrome.find_element_by_xpath('//span[text()="新建"]').click() + sleep(2) + chrome.switch_to.frame(chrome.find_element_by_xpath('//iframe[contains(@name,"awsui-dialog-iframe")]')) + #获取订单号 + + orderno=chrome.find_element_by_xpath('//div[text() = "寄售申请单号 "]/following-sibling::div/span').text + print(orderno) + # chrome.switch_to.default_content() + sleep(2) + # while True: + # try: + # if chrome.find_element_by_xpath('//div[text()="订单公司名称 "]').is_displayed(): + # print(chrome.find_element_by_xpath('//div[text()="订单公司名称 "]').text) + # break + # except: + # continue + # print(chrome.find_element_by_xpath('//div[text()="订单公司名称 "]').text) + + + # sleep(2) + # chrome.find_element_by_xpath( + # '//div[text()="公司名称 "]/following-sibling::div/div/div/div/div/div/div/div/span/span/i').click() + # chrome.find_element_by_xpath('//input[@placeholder="模糊检索:公司名称,公司编码"]').send_keys('国药集团北京') + # chrome.find_element_by_xpath('//input[@placeholder="模糊检索:公司名称,公司编码"]').send_keys(Keys.ENTER) + # chrome.find_element_by_xpath('(//span[@class="el-radio__inner"])[2]').click() + # chrome.find_element_by_xpath('//span[@class="ensureBtn"]/button').click() + # chrome.find_element_by_xpath('//button[@class="el-button el-button--primary el-button--mini"]').click() + + # 业务员名称 + chrome.find_element_by_xpath( + '//div[text()="业务员名称 "]/following-sibling::div/div/div/div/div/div/div/div/span/span/i').click() + chrome.find_element_by_xpath('//input[@placeholder="模糊检索:员工编码,员工名称"]').send_keys('杨春刚') + chrome.find_element_by_xpath('//input[@placeholder="模糊检索:员工编码,员工名称"]').send_keys( + Keys.ENTER) + chrome.find_element_by_xpath( + '(//div[text()="杨春刚"])[3]/ancestor-or-self::td/preceding-sibling::td/div/label/span/span').click() + chrome.find_element_by_xpath('(//span[@class="ensureBtn"]/button[1])[1]').click() + + #客户信息页签 + chrome.find_element_by_xpath('//div[text()="客户信息"]').click() + chrome.find_element_by_xpath('//div[text()="客户名称 "]/following-sibling::div/div/div/div/div/div/div/div/span/span/i').click() + chrome.find_element_by_xpath('//input[@placeholder="模糊检索:客户编码,客户名称,收货地址号,收货地址信息,地址名称"]').send_keys('1451') + chrome.find_element_by_xpath('//input[@placeholder="模糊检索:客户编码,客户名称,收货地址号,收货地址信息,地址名称"]').send_keys(Keys.ENTER) + # chrome.find_element_by_xpath('//span/input[@type="radio" and @value="03105272b49986351ef7eb2930b5454de"]').click() + btn_div= chrome.find_element_by_xpath('//span/input[@type="radio" and @value="0b570c63f68dfcc5a40d6a06f6aef07e4"]') + chrome.execute_script("arguments[0].click();", btn_div) + chrome.find_element_by_xpath('(//button[@class="el-button el-button--primary el-button--default"])[3]').click() + # #仓库信息页签 + # chrome.find_element_by_xpath('//div[text()="仓库信息"]').click() + # chrome.find_element_by_xpath( + # '//div[text()="借出仓库名称 "]/following-sibling::div/div/div/div/div/div/div/div/span/span/i').click() + # chrome.find_element_by_xpath('//input[@placeholder="模糊检索:仓库编码,仓库名称"]').send_keys('103356') + # chrome.find_element_by_xpath('//input[@placeholder="模糊检索:仓库编码,仓库名称"]').send_keys(Keys.ENTER) + # chrome.find_element_by_xpath('//div[@class="multiple-header string_col" and text()="103356"]/ancestor-or-self::td/preceding-sibling::td/div/label/span/span').click() + # chrome.find_element_by_xpath('(//button[@class="el-button el-button--primary el-button--default"])[4]').click() + # #借入仓库 + # chrome.find_element_by_xpath( + # '//div[text()="借入仓库名称 "]/following-sibling::div/div/div/div/div/div/div/div/span/span/i').click() + # chrome.find_element_by_xpath('(//input[@placeholder="模糊检索:仓库编码,仓库名称"])[2]').send_keys('103503') + # chrome.find_element_by_xpath('(//input[@placeholder="模糊检索:仓库编码,仓库名称"])[2]').send_keys(Keys.ENTER) + # chrome.find_element_by_xpath( + # '//div[@class="multiple-header string_col" and text()="103503"]/ancestor-or-self::td/preceding-sibling::td/div/label/span/span').click() + # chrome.find_element_by_xpath('(//button[@class="el-button el-button--primary el-button--default"])[5]').click() + # # #业务员名称 + # chrome.find_element_by_xpath( + # '//div[text()="业务员名称 "]/following-sibling::div/div/div/div/div/div/div/div/span/span/i').click() + # chrome.find_element_by_xpath('//input[@placeholder="模糊检索:业务员名称,业务员编码,业务部门名称,业务部门编码,部门类型编码"]').send_keys('杨春刚') + # chrome.find_element_by_xpath('//input[@placeholder="模糊检索:业务员名称,业务员编码,业务部门名称,业务部门编码,部门类型编码"]').send_keys(Keys.ENTER) + # chrome.find_element_by_xpath('(//div[text()="杨春刚"])[3]/ancestor-or-self::td/preceding-sibling::td/div/label/span/span').click() + # chrome.find_element_by_xpath('(//span[@class="ensureBtn"]/button[1])[4]').click() + # #其他信息页签 + # chrome.find_element_by_xpath('//div[text()="其他信息"]').click() + # chrome.find_element_by_xpath('//div[@cid="AWSUI.SwitchButton"]//div/div/div/div/span[1]').click() + # 子表信息录入 + chrome.find_element_by_xpath('//div[text()="主体信息"]').click() + chrome.find_element_by_xpath('//span[text()="添加商品"]').click() + chrome.find_element_by_xpath( + '//input[@placeholder="模糊检索:商品编码,商品名称,规格型号"]').send_keys( + '10006179') + chrome.find_element_by_xpath( + '//input[@placeholder="模糊检索:商品编码,商品名称,规格型号"]').send_keys( + Keys.ENTER) + chrome.find_element_by_xpath('(//span[@class="el-checkbox__inner"])[4]').click() + chrome.find_element_by_xpath('(//div[@class="el-dialog__body"]/div[2]/span/button[1]/span)[3]').click() + sleep(3) + # 滚动条右拉 + chrome.execute_script("document.getElementsByClassName('vxe-table--footer-wrapper body--wrapper')[0].scrollLeft = 800"); + sleep(3) + element = chrome.find_element_by_xpath('//td[@colid="col_113"]') + element.click() + sleep(3) + # element.send_keys("1") + # chrome.execute_script("document.getElementsByClassName('awsui-input-number-right')[0].value='1'") + chrome.find_element_by_class_name('awsui-input-number-right').send_keys('1') + sleep(1) + chrome.find_element_by_xpath('//td[@colid="col_114"]').click() + sleep(1) + # chrome.execute_script("document.getElementsByClassName('vxe-table--footer-wrapper body--wrapper')[0].scrollLeft = 1500"); + # sleep(1) + # element=chrome.find_element_by_xpath('//td[@colid="col_165"]') + # element.click() + # sleep(3) + # element.send_keys("1") + # chrome.execute_script("document.getElementsByClassName('awsui-input-number-right')[0].value='1'") + # chrome.find_element_by_class_name('awsui-input-number-right').send_keys('1') + sleep(1) + # chrome.find_element_by_xpath('//td[@colid="col_166"]').click() + sleep(1) + #滚动条右拉 + # document.getElementsByClassName('vxe-table--footer-wrapper body--wrapper')[0].scrollLeft = 5000 + # chrome.execute_script("document.getElementsByClassName('vxe-table--footer-wrapper body--wrapper')[0].scrollLeft = 2000"); + # element = chrome.find_element_by_xpath('//td[@colid="col_197"]') + # element.click() + # sleep(6) + # chrome.execute_script("document.getElementsByClassName('awsui-input-number-right')[0].value='8'") + # sleep(2) + # element = chrome.find_element_by_xpath('//td[@colid="col_198"]') + # element.click() + # sleep(6) + # chrome.execute_script("document.getElementsByClassName('awsui-input-number-right')[0].value='8'") + # sleep(2) + # lock = threading.Lock() + # lock.acquire() + chrome.find_element_by_xpath('//span[text()="提交"]').click() + sleep(1) + chrome.find_element_by_xpath('//button[@class="el-button el-button--primary el-button--mini"]').click() + sleep(1) + + chrome.switch_to.default_content() + sleep(1) + chrome.find_element_by_xpath('//span[@class="awsui-tabs-icon close"]').click() + order_link = chrome.find_element_by_xpath('//span[text()="寄售配货单"]') + chrome.execute_script("arguments[0].click();", order_link) + chrome.switch_to.frame(chrome.find_element_by_xpath('(//iframe[@class="metro-main-frame"])[2]')) + sleep(2) + # 输入配货单号 + chrome.find_element_by_xpath('(//input[@class="el-input__inner"])[2]').send_keys(orderno) + sleep(2) + chrome.find_element_by_xpath('(//input[@class="el-input__inner"])[2]').send_keys(Keys.ENTER) + sleep(2) + chrome.find_element_by_xpath('//td[@class="vxe-body--column col_19 col--center col--last col--ellipsis dw-click-cell"]/div/span').click() + sleep(2) + chrome.switch_to.frame(chrome.find_element_by_xpath('//iframe[contains(@name,"awsui-dialog-iframe")]')) + sleep(2) + # 点击自动配货按钮 + chrome.find_element_by_xpath('//button[text()="自动配货"]').click() + sleep(2) + chrome.find_element_by_xpath('//span[text()="分配批次"]').click() + sleep(2) + # chrome.execute_script( + # 'document.getElementsByClassName("body")[0].scrollTop = "300";') + # # 滚动条右拉 + # chrome.execute_script( + # "document.getElementsByClassName('vxe-table--footer-wrapper body--wrapper')[0].scrollLeft = 1200") + # + # element = chrome.find_element_by_xpath('(//td[@colid="col_124"])[1]') + # element.click() + # sleep(2) + # chrome.find_element_by_class_name('awsui-input-number-right').send_keys('1') + # sleep(2) + # chrome.find_element_by_xpath('//td[@colid="col_125"]').click() + # sleep(1) + + #方案一============================开始 + if type==1: + import datetime + now = datetime.datetime.now() + one_minutes_later = now + datetime.timedelta(minutes=1) + now = now.strftime('%Y-%m-%d %H:%M') + one_minutes_later = one_minutes_later.strftime('%Y-%m-%d %H:%M') + # print('bbbbbbbb'+one_minutes_later) + while True: + now = datetime.datetime.now().strftime('%Y-%m-%d %H:%M') + # print('变化的时间' + now) + if now == one_minutes_later: + print('时间到了') + chrome.find_element_by_xpath('//span[text()="提交"]').click() + # sleep(3) + chrome.find_element_by_xpath('//button[@class="el-button el-button--primary el-button--mini"]').click() + break + # 方案一============================结束 + #方案二===============开始 + if type==2: + m=get_time_m() #当前时间的分钟 + m1=get_submit_time(m)#计划提交时间的分钟 + while True: + m2=get_time_m() #循环获取当前的分 + sleep(10) + if (m2==m1): + chrome.find_element_by_xpath('//span[text()="提交"]').click() + # sleep(3) + chrome.find_element_by_xpath('//button[@class="el-button el-button--primary el-button--mini"]').click() + break + #方案二===============结束 + while True: + try: + if chrome.find_element_by_xpath('//p[text()="流程结束"]').is_displayed()==True: + # print('流程结束') + break + # else: + # print('共享任务创建成功的元素没有出现') + except: + continue + # lock.release() + # sleep(2) + # chrome.find_element_by_xpath('//button[@class="el-button el-button--primary el-button--mini"]').click() + chrome.switch_to.default_content() + chrome.switch_to.frame(chrome.find_element_by_xpath('(//iframe[@class="metro-main-frame"])[2]')) + # sleep(20) + while True: + try: + if chrome.find_element_by_xpath('(//span[text()="%s"])[1]'%orderno).is_displayed()==True: + print('//span[text()="%s"]'%orderno) + break + except: + continue + print('寄售申请单创建完成') + end = time.clock() + print(start, end) + print('CPU执行时间: ', end - start) + imgInfo = getErrorPhoto(chrome) + imgName = imgInfo[0] + image_path = imgInfo[1] + info=orderno+'执行耗时'+str(end - start) + now = get_time() + writeFile_append(pro_path + '/logs/catalina.out', info) + send_email1(image_path, info) + except Exception as e: + print('出现异常') + # 将日志写入到文件中单独存储 + pro_path = get_pro_path() + traceback.print_exc() + imgInfo = getErrorPhoto(chrome) + imgName = imgInfo[0] + image_path = imgInfo[1] + print(imgName, image_path) + print(repr(e)) + info = repr(e) + now = get_time() + writeFile_append(pro_path + '/logs/logerror%s.txt' % now, info) + # send_email1(image_path, info) +if __name__ == "__main__": + # 创建多线程时, 需要制定该线程执行的任务.name线程名字 target目标函数名 + # t1 = threading.Thread(target=job,name="job1") + # t2 = threading.Thread(target=job,name="job2") + # t1.start() + # t2.start() + # opt = ChromeOptions() # 创建 Chrome 参数对象 + # # opt.headless = True # 把 Chrome 设置成无界面模式,windows/Linux 皆可 + # opt.headless = False # 把 Chrome 设置成无界面模式,windows/Linux 皆可 + # opt.add_argument('--start-maximized') + # opt.add_argument('--window-size=1280x1024') + # # chrome = Chrome(options=opt) # 创建无界面对象 + # chrome = WebChrome(chrome_options=opt) # airtest中的类 + + count=1 + for i in range(count): + t = threading.Thread(target=job) + t.start() + # t.join() + +def start1(): + count = 5 + for i in range(count): + t = threading.Thread(target=job) + t.start() + t.join() + + # print(threading.active_count()) + # print("程序执行结束.....") + # create_salesorder() diff --git "a/testcase/od/\345\272\223\345\255\230\351\242\204\345\215\240\350\276\271\347\225\214\346\265\213\350\257\225/\345\272\223\345\255\230\351\242\204\345\215\240\350\276\271\347\225\214\346\265\213\350\257\225.py" "b/testcase/od/\345\272\223\345\255\230\351\242\204\345\215\240\350\276\271\347\225\214\346\265\213\350\257\225/\345\272\223\345\255\230\351\242\204\345\215\240\350\276\271\347\225\214\346\265\213\350\257\225.py" new file mode 100644 index 0000000000000000000000000000000000000000..9120786a625837f022673426e708837476777667 --- /dev/null +++ "b/testcase/od/\345\272\223\345\255\230\351\242\204\345\215\240\350\276\271\347\225\214\346\265\213\350\257\225/\345\272\223\345\255\230\351\242\204\345\215\240\350\276\271\347\225\214\346\265\213\350\257\225.py" @@ -0,0 +1,47 @@ +import threading +import time +from airtest.core.api import * +from selenium import webdriver +from selenium.webdriver.common.keys import Keys +from airtest_selenium.proxy import * +def job3(): + print("这是一个需要执行的任务。。。。。") + create_salesorder(2) + print("当前线程的个数:", threading.active_count() ) + time.sleep(1) + print("当前线程的信息:", threading.current_thread()) +def job1(): + print("这是一个需要执行的任务。。。。。") + create_salesorder1(2) + print("当前线程的个数:", threading.active_count() ) + time.sleep(1) + print("当前线程的信息:", threading.current_thread()) +if __name__ == "__main__": + # 创建多线程时, 需要制定该线程执行的任务.name线程名字 target目标函数名 + from testcase.od.库存预占边界测试.销售订单1 import * + from testcase.od.库存预占边界测试.调拨出库单1 import * + # t1 = threading.Thread(target=create_salesorder,name="job1") + # t2 = threading.Thread(target=create_salesorder1,name="job2") + # t1.start() + # t2.start() + count = 4 #4个人下单,只有3个商品 + # semaphore = threading.Semaphore(value=1) + for i in range(count): + if i<2: + t = threading.Thread(target=job3) + t.start() + if i>=2: + t = threading.Thread(target=job1) + t.start() + # t.join() + print(threading.active_count()) + # sleep(30) + # sys.exit(0) + + + # print("程序执行结束.....") + # for i in range(10): + # from testcase.od.销售订单 import * + # start1() + + diff --git "a/testcase/od/\345\272\223\345\255\230\351\242\204\345\215\240\350\276\271\347\225\214\346\265\213\350\257\225/\350\260\203\346\213\250\345\207\272\345\272\223\345\215\2251.py" "b/testcase/od/\345\272\223\345\255\230\351\242\204\345\215\240\350\276\271\347\225\214\346\265\213\350\257\225/\350\260\203\346\213\250\345\207\272\345\272\223\345\215\2251.py" new file mode 100644 index 0000000000000000000000000000000000000000..1f614873ca8ea9ae636ab29766259013b35197b8 --- /dev/null +++ "b/testcase/od/\345\272\223\345\255\230\351\242\204\345\215\240\350\276\271\347\225\214\346\265\213\350\257\225/\350\260\203\346\213\250\345\207\272\345\272\223\345\215\2251.py" @@ -0,0 +1,276 @@ +import datetime +import threading +import time +import traceback + +from airtest.core.api import * +from selenium import webdriver +from selenium.webdriver import DesiredCapabilities +from selenium.webdriver.common.keys import Keys +from airtest_selenium.proxy import * +from selenium.webdriver import Chrome, ChromeOptions +from airtest.core.api import * +from airtest_selenium.proxy import * + +from mail1 import send_email1 +from public.tools import * + + + + +# chrome = webdriver.Chrome(chrome_options=opt) + +def job(): + print("这是一个需要执行的任务。。。。。") + create_salesorder1(1) + print("当前线程的个数:", threading.active_count()) + time.sleep(1) + print("当前线程的信息:", threading.current_thread()) + + +def create_salesorder1(type=2): + import time + start = time.clock() + # caps = DesiredCapabilities().CHROME + # caps["pageLoadStrategy"] = "normal" # complete + # caps["pageLoadStrategy"] = "eager" # interactive + # caps["pageLoadStrategy"] = "none" + # chrome = webdriver.Chrome(desired_capabilities=caps) + opt = ChromeOptions() # 创建 Chrome 参数对象 + opt.headless = True # 把 Chrome 设置成无界面模式,windows/Linux 皆可 + # opt.headless = False # 把 Chrome 设置成无界面模式,windows/Linux 皆可 + opt.add_argument('--start-maximized') + opt.add_argument('--window-size=1280x1024') + # chrome = Chrome(options=opt) # 创建无界面对象 + # chrome = WebChrome(chrome_options=opt) + chrome = WebChrome(chrome_options=opt) + # chrome=webdriver.Chrome() + chrome.implicitly_wait(20) + chrome.get("http://10.17.65.200:8088/portal/") + # chrome.get("http://10.17.65.207:8088/uat/r/w") + sleep(2) + chrome.implicitly_wait(30) + # chrome.maximize_window() + chrome.find_element_by_id('input1').clear() + chrome.find_element_by_id('input1').send_keys('admin') + chrome.find_element_by_id('input2').clear() + chrome.find_element_by_id('input2').send_keys('Gyxc1234') + chrome.find_element_by_id('input2').send_keys(Keys.ENTER) + while True: + try: + if(chrome.find_element_by_xpath('//span[text()="退出"]').is_displayed()==True): + break + except: + continue + # 切换所属公司 + chrome.find_element_by_class_name('changeCom').click() + sleep(1) + chrome.find_element_by_xpath('//span[text()="国药集团北京医疗器械有限公司"]/following-sibling::button').click() + sleep(1) + chrome.find_element_by_xpath('// button[text() = "确定"]').click() + sleep(1) + allot_link = chrome.find_element_by_xpath('//span[text()="调拨出库单"]') + chrome.execute_script("arguments[0].click();", allot_link) + chrome.switch_to.frame(chrome.find_element_by_xpath('(//iframe[@class="metro-main-frame"])[2]')) + sleep(4) + chrome.find_element_by_xpath('//span[text()="新建"]').click() + sleep(4) + chrome.switch_to.frame(chrome.find_element_by_xpath('//iframe[contains(@name,"awsui-dialog-iframe")]')) + #获取调拨出库单号 + + orderno=chrome.find_element_by_xpath('//div[text() = "调拨出库订单号 "]/following-sibling::div/span').text + print(orderno) + # chrome.switch_to.default_content() + sleep(4) + # while True: + # try: + # if chrome.find_element_by_xpath('//div[text()="订单公司名称 "]').is_displayed(): + # print(chrome.find_element_by_xpath('//div[text()="订单公司名称 "]').text) + # break + # except: + # continue + print(chrome.find_element_by_xpath('//div[text()="公司名称 "]').text) + + + sleep(2) + chrome.find_element_by_xpath( + '//div[text()="公司名称 "]/following-sibling::div/div/div/div/div/div/div/div/span/span/i').click() + chrome.find_element_by_xpath('//input[@placeholder="模糊检索:公司名称,公司编码"]').send_keys('国药集团北京') + chrome.find_element_by_xpath('//input[@placeholder="模糊检索:公司名称,公司编码"]').send_keys(Keys.ENTER) + sleep(2) + chrome.find_element_by_xpath('(//span[@class="el-radio__inner"])[1]').click() + + chrome.find_element_by_xpath('//span[@class="ensureBtn"]/button').click() + chrome.find_element_by_xpath('//button[@class="el-button el-button--primary el-button--mini"]').click() + + # chrome.find_element_by_xpath('//div[text()="出库仓库 "]/following-sibling::div/div/div/div/div/div/div/div/span/span/i').click() + # chrome.find_element_by_xpath('//input[@placeholder="模糊检索:仓库编码,仓库名称,是否传WMS,所属公司名称"]').send_keys('北京强生非') + # chrome.find_element_by_xpath('//input[@placeholder="模糊检索:仓库编码,仓库名称,是否传WMS,所属公司名称"]').send_keys(Keys.ENTER) + # # chrome.find_element_by_xpath('//span/input[@type="radio" and @value="03105272b49986351ef7eb2930b5454de"]').click() + # btn_div= chrome.find_element_by_xpath('//span/input[@type="radio" and @value="03105272b49986351ef7eb2930b5454de"]') + # chrome.execute_script("arguments[0].click();", btn_div) + # chrome.find_element_by_xpath('(//button[@class="el-button el-button--primary el-button--default"])[3]').click() + # chrome.find_element_by_xpath('//div[text()="客户及合同信息"]').click() + # chrome.find_element_by_xpath( + # '//div[text()="合同号 "]/following-sibling::div/div/div/div/div/div/div/div/span/span/i').click() + # chrome.find_element_by_xpath('//input[@placeholder="模糊检索:合同号,合同协议号,对方编码,项目名称,项目编码,业态编码,参考部门,参考部门编码,参考业务员,参考业务员编码,产品线名称,产品线编码,合同类型,合同属性"]').send_keys('38443') + # chrome.find_element_by_xpath('//input[@placeholder="模糊检索:合同号,合同协议号,对方编码,项目名称,项目编码,业态编码,参考部门,参考部门编码,参考业务员,参考业务员编码,产品线名称,产品线编码,合同类型,合同属性"]').send_keys(Keys.ENTER) + # chrome.find_element_by_xpath('//div[@class="multiple-header string_col" and text()="38443"]/ancestor-or-self::td/preceding-sibling::td/div/label/span/span').click() + # chrome.find_element_by_xpath('(//button[@class="el-button el-button--primary el-button--default"])[4]').click() + #业务员名称 + sleep(1) + chrome.find_element_by_xpath( + '//div[text()="业务员 "]/following-sibling::div/div/div/div/div/div/div/div/span/span/i').click() + chrome.find_element_by_xpath('//input[@placeholder="模糊检索:业务员名称,业务员编码,部门名称,部门编码,部门类型"]').send_keys('杨春刚') + chrome.find_element_by_xpath('//input[@placeholder="模糊检索:业务员名称,业务员编码,部门名称,部门编码,部门类型"]').send_keys(Keys.ENTER) + chrome.find_element_by_xpath('(//div[text()="杨春刚"])[3]/ancestor-or-self::td/preceding-sibling::td/div/label/span/span').click() + chrome.find_element_by_xpath('(//span[@class="ensureBtn"]/button[1])[2]').click() + #仓库信息页签 + chrome.find_element_by_xpath('//div[text()="仓库信息"]').click() + #调拨出库仓库名称 + chrome.find_element_by_xpath( + '//div[text()="调拨出库仓库名称 "]/following-sibling::div/div/div/div/div/div/div/div/span/span/i').click() + chrome.find_element_by_xpath('//input[@placeholder="模糊检索:调拨出库仓库名称,调拨出库仓库编码,是否WMS仓"]').send_keys('北京强生非') + chrome.find_element_by_xpath('//input[@placeholder="模糊检索:调拨出库仓库名称,调拨出库仓库编码,是否WMS仓"]').send_keys(Keys.ENTER) + # chrome.find_element_by_xpath('//span/input[@type="radio" and @value="03105272b49986351ef7eb2930b5454de"]').click() + btn_div= chrome.find_element_by_xpath('//span/input[@type="radio" and @value="08374712eb9413253c6281062de2ab877"]') + chrome.execute_script("arguments[0].click();", btn_div) + chrome.find_element_by_xpath('(//span[@class="ensureBtn"])[3]/button').click() + #调拨入库仓库名称 + chrome.find_element_by_xpath( + '//div[text()="调拨入库仓库名称 "]/following-sibling::div/div/div/div/div/div/div/div/span/span/i').click() + chrome.find_element_by_xpath('//input[@placeholder="模糊检索:调拨入库仓库名称,调拨入库仓库编码,是否WMS"]').send_keys('北京公司-上海库') + chrome.find_element_by_xpath('//input[@placeholder="模糊检索:调拨入库仓库名称,调拨入库仓库编码,是否WMS"]').send_keys(Keys.ENTER) + # chrome.find_element_by_xpath('//span/input[@type="radio" and @value="03105272b49986351ef7eb2930b5454de"]').click() + btn_div = chrome.find_element_by_xpath('//span/input[@type="radio" and @value="0ae6dc5623cc2f6295808997a06ecb492"]') + chrome.execute_script("arguments[0].click();", btn_div) + chrome.find_element_by_xpath('(//span[@class="ensureBtn"])[4]/button').click() + + # 子表信息录入 + chrome.find_element_by_xpath('//div[text()="主体信息"]').click() + chrome.find_element_by_xpath('//span[text()="添加商品"]').click() + chrome.find_element_by_xpath( + '//input[@placeholder="模糊检索:商品编码,商品全称,规格型号,主计量单位,采购计量单位,厂家物料编码,存储条件,存储条件说明,生产企业编码,行类型,件包数,产品备注,产品描述,商品性质,是否免备案"]').send_keys( + '10176773') + chrome.find_element_by_xpath( + '//input[@placeholder="模糊检索:商品编码,商品全称,规格型号,主计量单位,采购计量单位,厂家物料编码,存储条件,存储条件说明,生产企业编码,行类型,件包数,产品备注,产品描述,商品性质,是否免备案"]').send_keys( + Keys.ENTER) + sleep(1) + chrome.find_element_by_xpath('(//span[@class="el-checkbox__inner"])[4]').click() + chrome.find_element_by_xpath('(//div[@class="el-dialog__body"]/div[2]/span/button[1]/span)[5]').click() + sleep(3) + element=chrome.find_element_by_xpath('//td[@colid="col_108"]') + element.click() + sleep(3) + # element.send_keys("1") + # chrome.execute_script("document.getElementsByClassName('awsui-input-number-right')[0].value='1'") + chrome.find_element_by_class_name('awsui-input-number-right').send_keys('1') + sleep(4) + #滚动条右拉 + # document.getElementsByClassName('vxe-table--footer-wrapper body--wrapper')[0].scrollLeft = 5000 + chrome.execute_script("document.getElementsByClassName('vxe-table--footer-wrapper body--wrapper')[0].scrollLeft = 2000"); + # element = chrome.find_element_by_xpath('//td[@colid="col_197"]') + # element.click() + # sleep(6) + # chrome.execute_script("document.getElementsByClassName('awsui-input-number-right')[0].value='8'") + # sleep(2) + # element = chrome.find_element_by_xpath('//td[@colid="col_198"]') + # element.click() + # sleep(6) + # chrome.execute_script("document.getElementsByClassName('awsui-input-number-right')[0].value='8'") + # sleep(2) + # lock = threading.Lock() + # lock.acquire() + #方案一============================开始 + if type==1: + import datetime + now = datetime.datetime.now() + one_minutes_later = now + datetime.timedelta(minutes=1) + now = now.strftime('%Y-%m-%d %H:%M') + one_minutes_later = one_minutes_later.strftime('%Y-%m-%d %H:%M') + # print('bbbbbbbb'+one_minutes_later) + while True: + now = datetime.datetime.now().strftime('%Y-%m-%d %H:%M') + # print('变化的时间' + now) + if now == one_minutes_later: + print('时间到了') + chrome.find_element_by_xpath('//span[text()="提交"]').click() + break + # 方案一============================结束 + #方案二===============开始 + if type==2: + m=get_time_m() #当前时间的分钟 + m1=get_submit_time(m)#计划提交时间的分钟 + print('调拨计划提交时间',m1) + while True: + m2=get_time_m() #循环获取当前的分 + # sleep(30) + if (m2==m1): + chrome.find_element_by_xpath('//span[text()="提交"]').click() + break + #方案二===============结束 + # lock.release() + sleep(5) + # chrome.find_element_by_xpath('//button[@class="el-button el-button--primary el-button--mini awsui-button awsui-button--primary"]//span[text()="确定"]').click() + chrome.switch_to.default_content() + chrome.switch_to.frame(chrome.find_element_by_xpath('(//iframe[@class="metro-main-frame"])[2]')) + # sleep(20) + while True: + try: + if chrome.find_element_by_xpath('(//span[text()="%s"])[2]'%orderno).is_displayed()==True: + print('//span[text()="%s"]'%orderno) + break + except: + continue + print('调拨出库单创建完成') + end = time.clock() + print(start, end) + print('CPU执行时间: ', end - start) + time1=end - start + imgInfo = getErrorPhoto(chrome) + imgName = imgInfo[0] + image_path = imgInfo[1] + info=orderno+',耗时'+str(time1) + now = get_time() + pro_path = get_pro_path() + writeFile_append(pro_path + '/logs/catalina.out', info) + send_email1(image_path, info) +if __name__ == "__main__": + # 创建多线程时, 需要制定该线程执行的任务.name线程名字 target目标函数名 + # t1 = threading.Thread(target=job,name="job1") + # t2 = threading.Thread(target=job,name="job2") + # t1.start() + # t2.start() + # opt = ChromeOptions() # 创建 Chrome 参数对象 + # # opt.headless = True # 把 Chrome 设置成无界面模式,windows/Linux 皆可 + # opt.headless = False # 把 Chrome 设置成无界面模式,windows/Linux 皆可 + # opt.add_argument('--start-maximized') + # opt.add_argument('--window-size=1280x1024') + # # chrome = Chrome(options=opt) # 创建无界面对象 + # chrome = WebChrome(chrome_options=opt) # airtest中的类 + pro_path = get_pro_path() + + try: + for i in range(1): + t = threading.Thread(target=job) + t.start() + # t.join() + except Exception as e: + print('出现异常') + # 将日志写入到文件中单独存储 + pro_path = get_pro_path() + traceback.print_exc() + # imgInfo = getErrorPhoto(chrome) + # imgName = imgInfo[0] + # image_path = imgInfo[1] + # print(imgName, image_path) + print(repr(e)) + info = repr(e) + now = get_time() + writeFile_append(pro_path + '/logs/logerror%s.txt' % now, info) + # send_email1(image_path, info) + + + # print(threading.active_count()) + # print("程序执行结束.....") + # create_salesorder() diff --git "a/testcase/od/\345\272\223\345\255\230\351\242\204\345\215\240\350\276\271\347\225\214\346\265\213\350\257\225/\351\224\200\345\224\256\350\256\242\345\215\2251.py" "b/testcase/od/\345\272\223\345\255\230\351\242\204\345\215\240\350\276\271\347\225\214\346\265\213\350\257\225/\351\224\200\345\224\256\350\256\242\345\215\2251.py" new file mode 100644 index 0000000000000000000000000000000000000000..a97d6219949b7c8f14d428bcd2804bd27e1a93e7 --- /dev/null +++ "b/testcase/od/\345\272\223\345\255\230\351\242\204\345\215\240\350\276\271\347\225\214\346\265\213\350\257\225/\351\224\200\345\224\256\350\256\242\345\215\2251.py" @@ -0,0 +1,268 @@ +import datetime +import threading +import time +import traceback + +from airtest.core.api import * +from selenium import webdriver +from selenium.webdriver import DesiredCapabilities +from selenium.webdriver.common.keys import Keys +from airtest_selenium.proxy import * +from selenium.webdriver import Chrome, ChromeOptions +from airtest.core.api import * +from airtest_selenium.proxy import * + +from mail1 import send_email1 +from public.tools import * + + + + +# chrome = webdriver.Chrome(chrome_options=opt) + +def job(): + print("这是一个需要执行的任务。。。。。") + create_salesorder() + print("当前线程的个数:", threading.active_count()) + time.sleep(1) + print("当前线程的信息:", threading.current_thread()) + + +def create_salesorder(type=2): + try: + import time + pro_path = get_pro_path() + start = time.clock() + # caps = DesiredCapabilities().CHROME + # caps["pageLoadStrategy"] = "normal" # complete + # caps["pageLoadStrategy"] = "eager" # interactive + # caps["pageLoadStrategy"] = "none" + # chrome = webdriver.Chrome(desired_capabilities=caps) + opt = ChromeOptions() # 创建 Chrome 参数对象 + opt.headless = True # 把 Chrome 设置成无界面模式,windows/Linux 皆可 + # opt.headless = False # 把 Chrome 设置成无界面模式,windows/Linux 皆可 + opt.add_argument('--start-maximized') + opt.add_argument('--window-size=1280x1024') + # chrome = Chrome(options=opt) # 创建无界面对象 + # chrome = WebChrome(chrome_options=opt) + chrome = WebChrome(chrome_options=opt) + # chrome=webdriver.Chrome() + chrome.implicitly_wait(20) + chrome.get("http://10.17.65.200:8088/portal/") + # chrome.get("http://10.17.65.207:8088/uat/r/w") + sleep(2) + chrome.implicitly_wait(30) + # chrome.maximize_window() + chrome.find_element_by_id('input1').clear() + chrome.find_element_by_id('input1').send_keys('admin') + chrome.find_element_by_id('input2').clear() + chrome.find_element_by_id('input2').send_keys('Gyxc1234') + chrome.find_element_by_id('input2').send_keys(Keys.ENTER) + while True: + try: + if(chrome.find_element_by_xpath('//span[text()="退出"]').is_displayed()==True): + break + except: + continue + #切换所属公司 + chrome.find_element_by_class_name('changeCom').click() + sleep(1) + chrome.find_element_by_xpath('//span[text()="国药集团北京医疗器械有限公司"]/following-sibling::button').click() + sleep(1) + chrome.find_element_by_xpath('// button[text() = "确定"]').click() + sleep(1) + # chrome.find_element_by_xpath('//div[text()="销售管理"]').click() + # actions = ActionChains(chrome) + # actions.move_to_element(chrome.find_element_by_xpath('//div[text()="销售业务"]')).perform() + # chrome.find_element_by_xpath('//span[text()="销售订单"]').click() + order_link = chrome.find_element_by_xpath('//span[text()="销售订单"]') + chrome.execute_script("arguments[0].click();", order_link) + chrome.switch_to.frame(chrome.find_element_by_xpath('(//iframe[@class="metro-main-frame"])[2]')) + sleep(4) + chrome.find_element_by_xpath('//span[text()="新建"]').click() + sleep(4) + chrome.switch_to.frame(chrome.find_element_by_xpath('//iframe[contains(@name,"awsui-dialog-iframe")]')) + #获取订单号 + + orderno=chrome.find_element_by_xpath('//div[text() = "销售订单号 "]/following-sibling::div/span').text + print(orderno) + # chrome.switch_to.default_content() + sleep(4) + # while True: + # try: + # if chrome.find_element_by_xpath('//div[text()="订单公司名称 "]').is_displayed(): + # print(chrome.find_element_by_xpath('//div[text()="订单公司名称 "]').text) + # break + # except: + # continue + print(chrome.find_element_by_xpath('//div[text()="订单公司名称 "]').text) + + + sleep(2) + chrome.find_element_by_xpath( + '//div[text()="订单公司名称 "]/following-sibling::div/div/div/div/div/div/div/div/span/span/i').click() + chrome.find_element_by_xpath('//input[@placeholder="模糊检索:公司名称,公司编码"]').send_keys('国药集团北京') + chrome.find_element_by_xpath('//input[@placeholder="模糊检索:公司名称,公司编码"]').send_keys(Keys.ENTER) + chrome.find_element_by_xpath('(//span[@class="el-radio__inner"])[1]').click() + + chrome.find_element_by_xpath('//span[@class="ensureBtn"]/button').click() + chrome.find_element_by_xpath('//button[@class="el-button el-button--primary el-button--mini"]').click() + chrome.find_element_by_xpath('//div[text()="出库仓库 "]/following-sibling::div/div/div/div/div/div/div/div/span/span/i').click() + chrome.find_element_by_xpath('//input[@placeholder="模糊检索:仓库编码,仓库名称,是否传WMS,所属公司名称"]').send_keys('北京强生非') + chrome.find_element_by_xpath('//input[@placeholder="模糊检索:仓库编码,仓库名称,是否传WMS,所属公司名称"]').send_keys(Keys.ENTER) + # chrome.find_element_by_xpath('//span/input[@type="radio" and @value="03105272b49986351ef7eb2930b5454de"]').click() + btn_div= chrome.find_element_by_xpath('//span/input[@type="radio" and @value="03105272b49986351ef7eb2930b5454de"]') + chrome.execute_script("arguments[0].click();", btn_div) + chrome.find_element_by_xpath('(//button[@class="el-button el-button--primary el-button--default"])[3]').click() + sleep(1) + chrome.find_element_by_xpath('//div[text()="客户及合同信息"]').click() + chrome.find_element_by_xpath( + '//div[text()="合同号 "]/following-sibling::div/div/div/div/div/div/div/div/span/span/i').click() + chrome.find_element_by_xpath('//input[@placeholder="模糊检索:合同号,合同协议号,对方编码,项目名称,项目编码,业态编码,参考部门,参考部门编码,参考业务员,参考业务员编码,产品线名称,产品线编码,合同类型,合同属性"]').send_keys('38443') + chrome.find_element_by_xpath('//input[@placeholder="模糊检索:合同号,合同协议号,对方编码,项目名称,项目编码,业态编码,参考部门,参考部门编码,参考业务员,参考业务员编码,产品线名称,产品线编码,合同类型,合同属性"]').send_keys(Keys.ENTER) + chrome.find_element_by_xpath('//div[@class="multiple-header string_col" and text()="38443"]/ancestor-or-self::td/preceding-sibling::td/div/label/span/span').click() + chrome.find_element_by_xpath('(//button[@class="el-button el-button--primary el-button--default"])[4]').click() + #业务员名称 + chrome.find_element_by_xpath( + '//div[text()="业务员名称 "]/following-sibling::div/div/div/div/div/div/div/div/span/span/i').click() + chrome.find_element_by_xpath('//input[@placeholder="模糊检索:业务员名称,业务员编码,业务部门名称,业务部门编码,部门类型编码"]').send_keys('杨春刚') + chrome.find_element_by_xpath('//input[@placeholder="模糊检索:业务员名称,业务员编码,业务部门名称,业务部门编码,部门类型编码"]').send_keys(Keys.ENTER) + chrome.find_element_by_xpath('(//div[text()="杨春刚"])[3]/ancestor-or-self::td/preceding-sibling::td/div/label/span/span').click() + chrome.find_element_by_xpath('(//span[@class="ensureBtn"]/button[1])[4]').click() + #其他信息页签 + chrome.find_element_by_xpath('//div[text()="其他信息"]').click() + chrome.find_element_by_xpath('//div[@cid="AWSUI.SwitchButton"]//div/div/div/div/span[1]').click() + # 子表信息录入 + chrome.find_element_by_xpath('//div[text()="主体信息"]').click() + chrome.find_element_by_xpath('//span[text()="添加商品"]').click() + chrome.find_element_by_xpath( + '//input[@placeholder="模糊检索:商品编码,商品名称,规格型号,主计量单位,销售计量单位,厂家物料编码,存储条件说明,生产企业编码,供应商编码,行类型,商品性质,批发价,进口/国产/港澳台,件包数,产品备注,是否免备案,产品描述"]').send_keys( + '10176773') + chrome.find_element_by_xpath( + '//input[@placeholder="模糊检索:商品编码,商品名称,规格型号,主计量单位,销售计量单位,厂家物料编码,存储条件说明,生产企业编码,供应商编码,行类型,商品性质,批发价,进口/国产/港澳台,件包数,产品备注,是否免备案,产品描述"]').send_keys( + Keys.ENTER) + sleep(1) + chrome.find_element_by_xpath('(//span[@class="el-checkbox__inner"])[4]').click() + chrome.find_element_by_xpath('(//div[@class="el-dialog__body"]/div[2]/span/button[1]/span)[5]').click() + sleep(2) + element=chrome.find_element_by_xpath('//td[@colid="col_177"]') + element.click() + sleep(2) + # element.send_keys("1") + # chrome.execute_script("document.getElementsByClassName('awsui-input-number-right')[0].value='1'") + chrome.find_element_by_class_name('awsui-input-number-right').send_keys('1') + # chrome.find_element_by_xpath('//td[@colid="col_177"]/div/div').send_keys('1') + sleep(1) + chrome.find_element_by_xpath('//td[@colid="col_178"]').click() + sleep(4) + #滚动条右拉 + # document.getElementsByClassName('vxe-table--footer-wrapper body--wrapper')[0].scrollLeft = 5000 + chrome.execute_script("document.getElementsByClassName('vxe-table--footer-wrapper body--wrapper')[0].scrollLeft = 2000"); + element = chrome.find_element_by_xpath('//td[@colid="col_197"]') + element.click() + sleep(2) + chrome.execute_script("document.getElementsByClassName('awsui-input-number-right')[0].value='8'") + sleep(2) + element = chrome.find_element_by_xpath('//td[@colid="col_198"]') + element.click() + sleep(2) + chrome.execute_script("document.getElementsByClassName('awsui-input-number-right')[0].value='8'") + sleep(2) + # lock = threading.Lock() + # lock.acquire() + #方案一============================开始 + if type==1: + import datetime + now = datetime.datetime.now() + one_minutes_later = now + datetime.timedelta(minutes=2) + now = now.strftime('%Y-%m-%d %H:%M') + one_minutes_later = one_minutes_later.strftime('%Y-%m-%d %H:%M') + # print('bbbbbbbb'+one_minutes_later) + while True: + now = datetime.datetime.now().strftime('%Y-%m-%d %H:%M') + # print('变化的时间' + now) + if now == one_minutes_later: + print('时间到了') + chrome.find_element_by_xpath('//span[text()="提交"]').click() + break + # 方案一============================结束 + #方案二===============开始 + if type==2: + m=get_time_m() #当前时间的分钟 + m1=get_submit_time(m)#计划提交时间的分钟 + print('销售订单计划提交时间的分钟',m1) + while True: + m2=get_time_m() #循环获取当前的分 + # sleep(30) + if (m2==m1): + chrome.find_element_by_xpath('//span[text()="提交"]').click() + break + #方案二===============结束 + # lock.release() + sleep(2) + # chrome.find_element_by_xpath('//button[@class="el-button el-button--primary el-button--mini awsui-button awsui-button--primary"]//span[text()="确定"]').click() + # chrome.switch_to.default_content() + # chrome.switch_to.frame(chrome.find_element_by_xpath('(//iframe[@class="metro-main-frame"])[2]')) + # sleep(20) + while True: + try: + if chrome.find_element_by_xpath('//span[text()="%s"]'%orderno).is_displayed()==True: + print('//span[text()="%s"]'%orderno) + break + except: + continue + print('销售订单创建完成') + end = time.clock() + print(start, end) + print('CPU执行时间: ', end - start) + imgInfo = getErrorPhoto(chrome) + imgName = imgInfo[0] + image_path = imgInfo[1] + info=orderno+'执行耗时'+str(end - start) + now = get_time() + writeFile_append(pro_path + '/logs/catalina.out', info) + send_email1(image_path, info) + except Exception as e: + print('出现异常') + # 将日志写入到文件中单独存储 + pro_path = get_pro_path() + traceback.print_exc() + imgInfo = getErrorPhoto(chrome) + imgName = imgInfo[0] + image_path = imgInfo[1] + print(imgName, image_path) + print(repr(e)) + info = repr(e) + now = get_time() + writeFile_append(pro_path + '/logs/logerror%s.txt' % now, info) + # send_email1(image_path, info) +if __name__ == "__main__": + # 创建多线程时, 需要制定该线程执行的任务.name线程名字 target目标函数名 + # t1 = threading.Thread(target=job,name="job1") + # t2 = threading.Thread(target=job,name="job2") + # t1.start() + # t2.start() + # opt = ChromeOptions() # 创建 Chrome 参数对象 + # # opt.headless = True # 把 Chrome 设置成无界面模式,windows/Linux 皆可 + # opt.headless = False # 把 Chrome 设置成无界面模式,windows/Linux 皆可 + # opt.add_argument('--start-maximized') + # opt.add_argument('--window-size=1280x1024') + # # chrome = Chrome(options=opt) # 创建无界面对象 + # chrome = WebChrome(chrome_options=opt) # airtest中的类 + + count=1 + for i in range(count): + t = threading.Thread(target=job) + t.start() + t.join() + +def start1(): + count = 1 + for i in range(count): + t = threading.Thread(target=job) + t.start() + t.join() + + # print(threading.active_count()) + # print("程序执行结束.....") + # create_salesorder() diff --git "a/testcase/od/\346\211\213\346\234\257\345\200\237\345\207\272\345\215\225.py" "b/testcase/od/\346\211\213\346\234\257\345\200\237\345\207\272\345\215\225.py" new file mode 100644 index 0000000000000000000000000000000000000000..469f0044cefd65fc9d98f2cc4dba023b73b23a3b --- /dev/null +++ "b/testcase/od/\346\211\213\346\234\257\345\200\237\345\207\272\345\215\225.py" @@ -0,0 +1,316 @@ +import datetime +import threading +import time +import traceback + +from airtest.core.api import * +from selenium import webdriver +from selenium.webdriver import DesiredCapabilities +from selenium.webdriver.common.keys import Keys +from airtest_selenium.proxy import * +from selenium.webdriver import Chrome, ChromeOptions +from airtest.core.api import * +from airtest_selenium.proxy import * + +from mail1 import send_email1 +from public.tools import * + + + + +# chrome = webdriver.Chrome(chrome_options=opt) + +def job(): + print("这是一个需要执行的任务。。。。。") + create_salesorder() + print("当前线程的个数:", threading.active_count()) + time.sleep(1) + print("当前线程的信息:", threading.current_thread()) + + +def create_salesorder(type=1): + try: + import time + pro_path = get_pro_path() + start = time.clock() + # caps = DesiredCapabilities().CHROME + # caps["pageLoadStrategy"] = "normal" # complete + # caps["pageLoadStrategy"] = "eager" # interactive + # caps["pageLoadStrategy"] = "none" + # chrome = webdriver.Chrome(desired_capabilities=caps) + opt = ChromeOptions() # 创建 Chrome 参数对象 + # opt.headless = True # 把 Chrome 设置成无界面模式,windows/Linux 皆可 + opt.headless = False # 把 Chrome 设置成无界面模式,windows/Linux 皆可 + opt.add_argument('--start-maximized') + opt.add_argument('--window-size=1280x1024') + # chrome = Chrome(options=opt) # 创建无界面对象 + # chrome = WebChrome(chrome_options=opt) + chrome = WebChrome(chrome_options=opt) + # chrome=webdriver.Chrome() + chrome.implicitly_wait(20) + chrome.get("http://10.17.65.200:8088/portal/") + # chrome.get("http://10.17.65.207:8088/uat/r/w") + sleep(2) + chrome.implicitly_wait(30) + chrome.maximize_window() + chrome.find_element_by_id('input1').clear() + chrome.find_element_by_id('input1').send_keys('admin') + chrome.find_element_by_id('input2').clear() + chrome.find_element_by_id('input2').send_keys('Gyxc1234') + chrome.find_element_by_id('input2').send_keys(Keys.ENTER) + while True: + try: + if(chrome.find_element_by_xpath('//span[text()="退出"]').is_displayed()==True): + break + except: + continue + # 切换所属公司 + chrome.find_element_by_class_name('changeCom').click() + sleep(1) + chrome.find_element_by_xpath('//span[text()="国药集团北京医疗器械有限公司"]/following-sibling::button').click() + sleep(1) + chrome.find_element_by_xpath('// button[text() = "确定"]').click() + sleep(1) + # chrome.find_element_by_xpath('//div[text()="销售管理"]').click() + # actions = ActionChains(chrome) + # actions.move_to_element(chrome.find_element_by_xpath('//div[text()="销售业务"]')).perform() + # chrome.find_element_by_xpath('//span[text()="销售订单"]').click() + order_link = chrome.find_element_by_xpath('//span[text()="手术借出单"]') + chrome.execute_script("arguments[0].click();", order_link) + chrome.switch_to.frame(chrome.find_element_by_xpath('(//iframe[@class="metro-main-frame"])[2]')) + sleep(2) + chrome.find_element_by_xpath('//span[text()="新建"]').click() + sleep(2) + chrome.switch_to.frame(chrome.find_element_by_xpath('//iframe[contains(@name,"awsui-dialog-iframe")]')) + #获取订单号 + + orderno=chrome.find_element_by_xpath('//div[text() = "借出单号 "]/following-sibling::div/span').text + print(orderno) + # chrome.switch_to.default_content() + sleep(2) + # while True: + # try: + # if chrome.find_element_by_xpath('//div[text()="订单公司名称 "]').is_displayed(): + # print(chrome.find_element_by_xpath('//div[text()="订单公司名称 "]').text) + # break + # except: + # continue + # print(chrome.find_element_by_xpath('//div[text()="订单公司名称 "]').text) + sleep(2) + # chrome.find_element_by_xpath( + # '//div[text()="公司名称 "]/following-sibling::div/div/div/div/div/div/div/div/span/span/i').click() + # chrome.find_element_by_xpath('//input[@placeholder="模糊检索:公司名称,公司编码"]').send_keys('国药集团北京') + # chrome.find_element_by_xpath('//input[@placeholder="模糊检索:公司名称,公司编码"]').send_keys(Keys.ENTER) + # chrome.find_element_by_xpath('//button[@class="el-button el-button--primary el-button--mini"]').click() + # chrome.find_element_by_xpath('(//span[@class="el-radio__inner"])[1]').click() + # chrome.find_element_by_xpath('//span[@class="ensureBtn"]/button').click() + # chrome.find_element_by_xpath('//button[@class="el-button el-button--primary el-button--mini"]').click() + + + + # 业务员名称 + chrome.find_element_by_xpath( + '//div[text()="业务员名称 "]/following-sibling::div/div/div/div/div/div/div/div/span/span/i').click() + chrome.find_element_by_xpath('//input[@placeholder="模糊检索:员工编码,员工名称,部门编码,部门名称"]').send_keys('chenshuheng') + chrome.find_element_by_xpath('//input[@placeholder="模糊检索:员工编码,员工名称,部门编码,部门名称"]').send_keys( + Keys.ENTER) + chrome.find_element_by_xpath( + '(//div[text()="chenshuheng"])[3]/ancestor-or-self::td/preceding-sibling::td/div/label/span/span').click() + chrome.find_element_by_xpath('(//span[@class="ensureBtn"]/button[1])[1]').click() + + #手术类型 + chrome.find_element_by_xpath('(//input[@placeholder="请选择" and @type="text"])').click() + sleep(1) + chrome.find_element_by_xpath('//li[text()="初次手术"]').click() + sleep(1) + #手术种类 + chrome.find_element_by_xpath('(//input[@placeholder="请选择" and @type="text"])[2]').click() + sleep(1) + chrome.find_element_by_xpath('//li[text()="髋关节"]').click() + sleep(1) + chrome.find_element_by_xpath('//label[text()="手术日期 "]/following-sibling::div/div').click() + sleep(1) + chrome.find_element_by_xpath('//div[ @class ="el-date-table-cell"] // span[text()="31"]').click() + + #客户信息页签 + chrome.find_element_by_xpath('//div[text()="客户信息"]').click() + chrome.find_element_by_xpath('//div[text()="客户名称 "]/following-sibling::div/div/div/div/div/div/div/div/span/span/i').click() + chrome.find_element_by_xpath('//input[@placeholder="模糊检索:客户编码,客户名称"]').send_keys('北京大学第三医院') + chrome.find_element_by_xpath('//input[@placeholder="模糊检索:客户编码,客户名称"]').send_keys(Keys.ENTER) + # chrome.find_element_by_xpath('//span/input[@type="radio" and @value="03105272b49986351ef7eb2930b5454de"]').click() + btn_div= chrome.find_element_by_xpath('//span/input[@type="radio" and @value="083165b4f865526823ef04a27fa9cd7c1"]') + chrome.execute_script("arguments[0].click();", btn_div) + chrome.find_element_by_xpath('(//button[@class="el-button el-button--primary el-button--default"])[3]').click() + + #医院名称 + chrome.find_element_by_xpath( + '//div[text()="医院名称 "]/following-sibling::div/div/div/div/div/div/div/div/span/span/i').click() + chrome.find_element_by_xpath('//input[@placeholder="模糊检索:客户编码,客商名称"]').send_keys('北京大学第三医院') + chrome.find_element_by_xpath('//input[@placeholder="模糊检索:客户编码,客商名称"]').send_keys(Keys.ENTER) + # chrome.find_element_by_xpath('//span/input[@type="radio" and @value="03105272b49986351ef7eb2930b5454de"]').click() + btn_div = chrome.find_element_by_xpath( + '//span/input[@type="radio" and @value="0c4d395678c596b20aa6c2a2fef3483d4"]') + chrome.execute_script("arguments[0].click();", btn_div) + chrome.find_element_by_xpath('(//button[@class="el-button el-button--primary el-button--default"])[3]').click() + + # chrome.find_element_by_xpath('//div[text()="仓库信息"]').click() + # chrome.find_element_by_xpath( + # '//div[text()="合同号 "]/following-sibling::div/div/div/div/div/div/div/div/span/span/i').click() + # chrome.find_element_by_xpath('//input[@placeholder="模糊检索:合同号,合同协议号,对方编码,项目名称,项目编码,业态编码,参考部门,参考部门编码,参考业务员,参考业务员编码,产品线名称,产品线编码,合同类型,合同属性"]').send_keys('38443') + # chrome.find_element_by_xpath('//input[@placeholder="模糊检索:合同号,合同协议号,对方编码,项目名称,项目编码,业态编码,参考部门,参考部门编码,参考业务员,参考业务员编码,产品线名称,产品线编码,合同类型,合同属性"]').send_keys(Keys.ENTER) + # chrome.find_element_by_xpath('//div[@class="multiple-header string_col" and text()="38443"]/ancestor-or-self::td/preceding-sibling::td/div/label/span/span').click() + # chrome.find_element_by_xpath('(//button[@class="el-button el-button--primary el-button--default"])[4]').click() + # #业务员名称 + # chrome.find_element_by_xpath( + # '//div[text()="业务员名称 "]/following-sibling::div/div/div/div/div/div/div/div/span/span/i').click() + # chrome.find_element_by_xpath('//input[@placeholder="模糊检索:业务员名称,业务员编码,业务部门名称,业务部门编码,部门类型编码"]').send_keys('杨春刚') + # chrome.find_element_by_xpath('//input[@placeholder="模糊检索:业务员名称,业务员编码,业务部门名称,业务部门编码,部门类型编码"]').send_keys(Keys.ENTER) + # chrome.find_element_by_xpath('(//div[text()="杨春刚"])[3]/ancestor-or-self::td/preceding-sibling::td/div/label/span/span').click() + # chrome.find_element_by_xpath('(//span[@class="ensureBtn"]/button[1])[4]').click() + # #其他信息页签 + # chrome.find_element_by_xpath('//div[text()="其他信息"]').click() + # chrome.find_element_by_xpath('//div[@cid="AWSUI.SwitchButton"]//div/div/div/div/span[1]').click() + # 子表信息录入 + chrome.find_element_by_xpath('//div[text()="主体信息"]').click() + chrome.find_element_by_xpath('//span[text()="添加商品"]').click() + chrome.find_element_by_xpath( + '//input[@placeholder="模糊检索:商品编码,商品名称,规格型号,厂家物料编码,存储条件"]').send_keys( + '10214724') + chrome.find_element_by_xpath( + '//input[@placeholder="模糊检索:商品编码,商品名称,规格型号,厂家物料编码,存储条件"]').send_keys( + Keys.ENTER) + sleep(1) + chrome.find_element_by_xpath('(//span[@class="el-checkbox__inner"])[4]').click() + chrome.find_element_by_xpath('(//div[@class="el-dialog__body"]/div[2]/span/button[1]/span)[4]').click() + sleep(3) + # 滚动条右拉 + # chrome.execute_script("document.getElementsByClassName('vxe-table--footer-wrapper body--wrapper')[0].scrollLeft = 2000"); + + element=chrome.find_element_by_xpath('//td[@colid="col_89"]') + element.click() + sleep(2) + # element.send_keys("1") + # chrome.execute_script("document.getElementsByClassName('awsui-input-number-right')[0].value='1'") + chrome.find_element_by_class_name('awsui-input-number-right').send_keys('1') + sleep(2) + chrome.find_element_by_xpath('//td[@colid="col_90"]').click() + #滚动条右拉 + # document.getElementsByClassName('vxe-table--footer-wrapper body--wrapper')[0].scrollLeft = 5000 + # chrome.execute_script("document.getElementsByClassName('vxe-table--footer-wrapper body--wrapper')[0].scrollLeft = 2000"); + # element = chrome.find_element_by_xpath('//td[@colid="col_197"]') + # element.click() + # sleep(6) + # chrome.execute_script("document.getElementsByClassName('awsui-input-number-right')[0].value='8'") + # sleep(2) + # element = chrome.find_element_by_xpath('//td[@colid="col_198"]') + # element.click() + # sleep(6) + # chrome.execute_script("document.getElementsByClassName('awsui-input-number-right')[0].value='8'") + # sleep(2) + # lock = threading.Lock() + # lock.acquire() + #方案一============================开始 + # if user_count<=5: + if type==1: + import datetime + now = datetime.datetime.now() + one_minutes_later = now + datetime.timedelta(minutes=1) + now = now.strftime('%Y-%m-%d %H:%M') + one_minutes_later = one_minutes_later.strftime('%Y-%m-%d %H:%M') + # print('bbbbbbbb'+one_minutes_later) + while True: + now = datetime.datetime.now().strftime('%Y-%m-%d %H:%M') + # print('变化的时间' + now) + if now == one_minutes_later: + print('时间到了') + start = time.clock() + chrome.find_element_by_xpath('//span[text()="提交"]').click() + break + # 方案一============================结束 + #方案二===============开始 + if type==2: + m=get_time_m() #当前时间的分钟 + m1=get_submit_time(m)#计划提交时间的分钟 + while True: + m2=get_time_m() #循环获取当前的分 + # sleep(60) + if (m2==m1): + start = time.clock() + chrome.find_element_by_xpath('//span[text()="提交"]').click() + break + #方案二===============结束 + # lock.release() + while True: + try: + if chrome.find_element_by_xpath('//p[text()="共享任务创建成功"]').is_displayed() == True: + # print('订单完成了') + break + except: + continue + sleep(2) + # chrome.find_element_by_xpath('//button[@class="el-button el-button--primary el-button--mini"]').click() + # chrome.switch_to.default_content() + # chrome.switch_to.frame(chrome.find_element_by_xpath('(//iframe[@class="metro-main-frame"])[2]')) + # sleep(20) + while True: + try: + if chrome.find_element_by_xpath('//span[text()="%s"]'%orderno).is_displayed()==True: + print('//span[text()="%s"]'%orderno) + break + except: + continue + print('手术借出单创建完成') + end = time.clock() + print(start, end) + print('CPU执行时间: ', end - start) + imgInfo = getErrorPhoto(chrome) + imgName = imgInfo[0] + image_path = imgInfo[1] + info=orderno+'执行耗时'+str(end - start) + now = get_time() + writeFile_append(pro_path + '/logs/catalina.out', info) + send_email1(image_path, info) + except Exception as e: + print('出现异常') + # 将日志写入到文件中单独存储 + pro_path = get_pro_path() + traceback.print_exc() + imgInfo = getErrorPhoto(chrome) + imgName = imgInfo[0] + image_path = imgInfo[1] + print(imgName, image_path) + print(repr(e)) + info = repr(e) + now = get_time() + writeFile_append(pro_path + '/logs/logerror%s.txt' % now, info) + # send_email1(image_path, info) +if __name__ == "__main__": + # 创建多线程时, 需要制定该线程执行的任务.name线程名字 target目标函数名 + # t1 = threading.Thread(target=job,name="job1") + # t2 = threading.Thread(target=job,name="job2") + # t1.start() + # t2.start() + # opt = ChromeOptions() # 创建 Chrome 参数对象 + # # opt.headless = True # 把 Chrome 设置成无界面模式,windows/Linux 皆可 + # opt.headless = False # 把 Chrome 设置成无界面模式,windows/Linux 皆可 + # opt.add_argument('--start-maximized') + # opt.add_argument('--window-size=1280x1024') + # # chrome = Chrome(options=opt) # 创建无界面对象 + # chrome = WebChrome(chrome_options=opt) # airtest中的类 + + count=1 + for i in range(count): + t = threading.Thread(target=job) + t.start() + t.join() + +def start1(): + count = 5 + for i in range(count): + t = threading.Thread(target=job) + t.start() + t.join() + + # print(threading.active_count()) + # print("程序执行结束.....") + # create_salesorder() diff --git "a/testcase/od/\346\211\213\346\234\257\345\200\237\345\207\272\345\215\225\345\271\266\345\217\221/\346\211\213\346\234\257\345\200\237\345\207\272\345\215\225.py" "b/testcase/od/\346\211\213\346\234\257\345\200\237\345\207\272\345\215\225\345\271\266\345\217\221/\346\211\213\346\234\257\345\200\237\345\207\272\345\215\225.py" new file mode 100644 index 0000000000000000000000000000000000000000..72db3ae0fd93487c46be02d91324c0a66c68974e --- /dev/null +++ "b/testcase/od/\346\211\213\346\234\257\345\200\237\345\207\272\345\215\225\345\271\266\345\217\221/\346\211\213\346\234\257\345\200\237\345\207\272\345\215\225.py" @@ -0,0 +1,316 @@ +import datetime +import threading +import time +import traceback + +from airtest.core.api import * +from selenium import webdriver +from selenium.webdriver import DesiredCapabilities +from selenium.webdriver.common.keys import Keys +from airtest_selenium.proxy import * +from selenium.webdriver import Chrome, ChromeOptions +from airtest.core.api import * +from airtest_selenium.proxy import * + +from mail1 import send_email1 +from public.tools import * + + + + +# chrome = webdriver.Chrome(chrome_options=opt) + +def job(): + print("这是一个需要执行的任务。。。。。") + create_salesorder() + print("当前线程的个数:", threading.active_count()) + time.sleep(1) + print("当前线程的信息:", threading.current_thread()) + + +def create_salesorder(type=1): + try: + import time + pro_path = get_pro_path() + start = time.clock() + # caps = DesiredCapabilities().CHROME + # caps["pageLoadStrategy"] = "normal" # complete + # caps["pageLoadStrategy"] = "eager" # interactive + # caps["pageLoadStrategy"] = "none" + # chrome = webdriver.Chrome(desired_capabilities=caps) + opt = ChromeOptions() # 创建 Chrome 参数对象 + # opt.headless = True # 把 Chrome 设置成无界面模式,windows/Linux 皆可 + opt.headless = False # 把 Chrome 设置成无界面模式,windows/Linux 皆可 + opt.add_argument('--start-maximized') + opt.add_argument('--window-size=1280x1024') + # chrome = Chrome(options=opt) # 创建无界面对象 + # chrome = WebChrome(chrome_options=opt) + chrome = WebChrome(chrome_options=opt) + # chrome=webdriver.Chrome() + chrome.implicitly_wait(20) + chrome.get("http://10.17.65.200:8088/portal/") + # chrome.get("http://10.17.65.207:8088/uat/r/w") + sleep(2) + chrome.implicitly_wait(30) + chrome.maximize_window() + chrome.find_element_by_id('input1').clear() + chrome.find_element_by_id('input1').send_keys('admin') + chrome.find_element_by_id('input2').clear() + chrome.find_element_by_id('input2').send_keys('Gyxc1234') + chrome.find_element_by_id('input2').send_keys(Keys.ENTER) + while True: + try: + if(chrome.find_element_by_xpath('//span[text()="退出"]').is_displayed()==True): + break + except: + continue + # 切换所属公司 + chrome.find_element_by_class_name('changeCom').click() + sleep(1) + chrome.find_element_by_xpath('//span[text()="国药集团北京医疗器械有限公司"]/following-sibling::button').click() + sleep(1) + chrome.find_element_by_xpath('// button[text() = "确定"]').click() + sleep(1) + # chrome.find_element_by_xpath('//div[text()="销售管理"]').click() + # actions = ActionChains(chrome) + # actions.move_to_element(chrome.find_element_by_xpath('//div[text()="销售业务"]')).perform() + # chrome.find_element_by_xpath('//span[text()="销售订单"]').click() + order_link = chrome.find_element_by_xpath('//span[text()="手术借出单"]') + chrome.execute_script("arguments[0].click();", order_link) + chrome.switch_to.frame(chrome.find_element_by_xpath('(//iframe[@class="metro-main-frame"])[2]')) + sleep(2) + chrome.find_element_by_xpath('//span[text()="新建"]').click() + sleep(2) + chrome.switch_to.frame(chrome.find_element_by_xpath('//iframe[contains(@name,"awsui-dialog-iframe")]')) + #获取订单号 + + orderno=chrome.find_element_by_xpath('//div[text() = "借出单号 "]/following-sibling::div/span').text + print(orderno) + # chrome.switch_to.default_content() + sleep(2) + # while True: + # try: + # if chrome.find_element_by_xpath('//div[text()="订单公司名称 "]').is_displayed(): + # print(chrome.find_element_by_xpath('//div[text()="订单公司名称 "]').text) + # break + # except: + # continue + # print(chrome.find_element_by_xpath('//div[text()="订单公司名称 "]').text) + sleep(2) + # chrome.find_element_by_xpath( + # '//div[text()="公司名称 "]/following-sibling::div/div/div/div/div/div/div/div/span/span/i').click() + # chrome.find_element_by_xpath('//input[@placeholder="模糊检索:公司名称,公司编码"]').send_keys('国药集团北京') + # chrome.find_element_by_xpath('//input[@placeholder="模糊检索:公司名称,公司编码"]').send_keys(Keys.ENTER) + # chrome.find_element_by_xpath('//button[@class="el-button el-button--primary el-button--mini"]').click() + # chrome.find_element_by_xpath('(//span[@class="el-radio__inner"])[1]').click() + # chrome.find_element_by_xpath('//span[@class="ensureBtn"]/button').click() + # chrome.find_element_by_xpath('//button[@class="el-button el-button--primary el-button--mini"]').click() + + + + # 业务员名称 + chrome.find_element_by_xpath( + '//div[text()="业务员名称 "]/following-sibling::div/div/div/div/div/div/div/div/span/span/i').click() + chrome.find_element_by_xpath('//input[@placeholder="模糊检索:员工编码,员工名称,部门编码,部门名称"]').send_keys('chenshuheng') + chrome.find_element_by_xpath('//input[@placeholder="模糊检索:员工编码,员工名称,部门编码,部门名称"]').send_keys( + Keys.ENTER) + chrome.find_element_by_xpath( + '(//div[text()="chenshuheng"])[3]/ancestor-or-self::td/preceding-sibling::td/div/label/span/span').click() + chrome.find_element_by_xpath('(//span[@class="ensureBtn"]/button[1])[1]').click() + + #手术类型 + chrome.find_element_by_xpath('(//input[@placeholder="请选择" and @type="text"])').click() + sleep(1) + chrome.find_element_by_xpath('//li[text()="初次手术"]').click() + sleep(1) + #手术种类 + chrome.find_element_by_xpath('(//input[@placeholder="请选择" and @type="text"])[2]').click() + sleep(1) + chrome.find_element_by_xpath('//li[text()="髋关节"]').click() + sleep(1) + chrome.find_element_by_xpath('//label[text()="手术日期 "]/following-sibling::div/div').click() + sleep(1) + chrome.find_element_by_xpath('//div[ @class ="el-date-table-cell"] // span[text()="31"]').click() + + #客户信息页签 + chrome.find_element_by_xpath('//div[text()="客户信息"]').click() + chrome.find_element_by_xpath('//div[text()="客户名称 "]/following-sibling::div/div/div/div/div/div/div/div/span/span/i').click() + chrome.find_element_by_xpath('//input[@placeholder="模糊检索:客户编码,客户名称"]').send_keys('北京大学第三医院') + chrome.find_element_by_xpath('//input[@placeholder="模糊检索:客户编码,客户名称"]').send_keys(Keys.ENTER) + # chrome.find_element_by_xpath('//span/input[@type="radio" and @value="03105272b49986351ef7eb2930b5454de"]').click() + btn_div= chrome.find_element_by_xpath('//span/input[@type="radio" and @value="083165b4f865526823ef04a27fa9cd7c1"]') + chrome.execute_script("arguments[0].click();", btn_div) + chrome.find_element_by_xpath('(//button[@class="el-button el-button--primary el-button--default"])[3]').click() + + #医院名称 + chrome.find_element_by_xpath( + '//div[text()="医院名称 "]/following-sibling::div/div/div/div/div/div/div/div/span/span/i').click() + chrome.find_element_by_xpath('//input[@placeholder="模糊检索:客户编码,客商名称"]').send_keys('北京大学第三医院') + chrome.find_element_by_xpath('//input[@placeholder="模糊检索:客户编码,客商名称"]').send_keys(Keys.ENTER) + # chrome.find_element_by_xpath('//span/input[@type="radio" and @value="03105272b49986351ef7eb2930b5454de"]').click() + btn_div = chrome.find_element_by_xpath( + '//span/input[@type="radio" and @value="0c4d395678c596b20aa6c2a2fef3483d4"]') + chrome.execute_script("arguments[0].click();", btn_div) + chrome.find_element_by_xpath('(//button[@class="el-button el-button--primary el-button--default"])[3]').click() + + # chrome.find_element_by_xpath('//div[text()="仓库信息"]').click() + # chrome.find_element_by_xpath( + # '//div[text()="合同号 "]/following-sibling::div/div/div/div/div/div/div/div/span/span/i').click() + # chrome.find_element_by_xpath('//input[@placeholder="模糊检索:合同号,合同协议号,对方编码,项目名称,项目编码,业态编码,参考部门,参考部门编码,参考业务员,参考业务员编码,产品线名称,产品线编码,合同类型,合同属性"]').send_keys('38443') + # chrome.find_element_by_xpath('//input[@placeholder="模糊检索:合同号,合同协议号,对方编码,项目名称,项目编码,业态编码,参考部门,参考部门编码,参考业务员,参考业务员编码,产品线名称,产品线编码,合同类型,合同属性"]').send_keys(Keys.ENTER) + # chrome.find_element_by_xpath('//div[@class="multiple-header string_col" and text()="38443"]/ancestor-or-self::td/preceding-sibling::td/div/label/span/span').click() + # chrome.find_element_by_xpath('(//button[@class="el-button el-button--primary el-button--default"])[4]').click() + # #业务员名称 + # chrome.find_element_by_xpath( + # '//div[text()="业务员名称 "]/following-sibling::div/div/div/div/div/div/div/div/span/span/i').click() + # chrome.find_element_by_xpath('//input[@placeholder="模糊检索:业务员名称,业务员编码,业务部门名称,业务部门编码,部门类型编码"]').send_keys('杨春刚') + # chrome.find_element_by_xpath('//input[@placeholder="模糊检索:业务员名称,业务员编码,业务部门名称,业务部门编码,部门类型编码"]').send_keys(Keys.ENTER) + # chrome.find_element_by_xpath('(//div[text()="杨春刚"])[3]/ancestor-or-self::td/preceding-sibling::td/div/label/span/span').click() + # chrome.find_element_by_xpath('(//span[@class="ensureBtn"]/button[1])[4]').click() + # #其他信息页签 + # chrome.find_element_by_xpath('//div[text()="其他信息"]').click() + # chrome.find_element_by_xpath('//div[@cid="AWSUI.SwitchButton"]//div/div/div/div/span[1]').click() + # 子表信息录入 + chrome.find_element_by_xpath('//div[text()="主体信息"]').click() + chrome.find_element_by_xpath('//span[text()="添加商品"]').click() + chrome.find_element_by_xpath( + '//input[@placeholder="模糊检索:商品编码,商品名称,规格型号,厂家物料编码,存储条件"]').send_keys( + '10176773') + chrome.find_element_by_xpath( + '//input[@placeholder="模糊检索:商品编码,商品名称,规格型号,厂家物料编码,存储条件"]').send_keys( + Keys.ENTER) + sleep(1) + chrome.find_element_by_xpath('(//span[@class="el-checkbox__inner"])[4]').click() + chrome.find_element_by_xpath('(//div[@class="el-dialog__body"]/div[2]/span/button[1]/span)[4]').click() + sleep(3) + # 滚动条右拉 + # chrome.execute_script("document.getElementsByClassName('vxe-table--footer-wrapper body--wrapper')[0].scrollLeft = 2000"); + + element=chrome.find_element_by_xpath('//td[@colid="col_89"]') + element.click() + sleep(2) + # element.send_keys("1") + # chrome.execute_script("document.getElementsByClassName('awsui-input-number-right')[0].value='1'") + chrome.find_element_by_class_name('awsui-input-number-right').send_keys('1') + sleep(2) + chrome.find_element_by_xpath('//td[@colid="col_90"]').click() + #滚动条右拉 + # document.getElementsByClassName('vxe-table--footer-wrapper body--wrapper')[0].scrollLeft = 5000 + # chrome.execute_script("document.getElementsByClassName('vxe-table--footer-wrapper body--wrapper')[0].scrollLeft = 2000"); + # element = chrome.find_element_by_xpath('//td[@colid="col_197"]') + # element.click() + # sleep(6) + # chrome.execute_script("document.getElementsByClassName('awsui-input-number-right')[0].value='8'") + # sleep(2) + # element = chrome.find_element_by_xpath('//td[@colid="col_198"]') + # element.click() + # sleep(6) + # chrome.execute_script("document.getElementsByClassName('awsui-input-number-right')[0].value='8'") + # sleep(2) + # lock = threading.Lock() + # lock.acquire() + #方案一============================开始 + # if user_count<=5: + if type==1: + import datetime + now = datetime.datetime.now() + one_minutes_later = now + datetime.timedelta(minutes=1) + now = now.strftime('%Y-%m-%d %H:%M') + one_minutes_later = one_minutes_later.strftime('%Y-%m-%d %H:%M') + # print('bbbbbbbb'+one_minutes_later) + while True: + now = datetime.datetime.now().strftime('%Y-%m-%d %H:%M') + # print('变化的时间' + now) + if now == one_minutes_later: + print('时间到了') + start = time.clock() + chrome.find_element_by_xpath('//span[text()="提交"]').click() + break + # 方案一============================结束 + #方案二===============开始 + if type==2: + m=get_time_m() #当前时间的分钟 + m1=get_submit_time(m)#计划提交时间的分钟 + while True: + m2=get_time_m() #循环获取当前的分 + # sleep(60) + if (m2==m1): + start = time.clock() + chrome.find_element_by_xpath('//span[text()="提交"]').click() + break + #方案二===============结束 + # lock.release() + while True: + try: + if chrome.find_element_by_xpath('//p[text()="共享任务创建成功"]').is_displayed() == True: + # print('订单完成了') + break + except: + continue + sleep(2) + # chrome.find_element_by_xpath('//button[@class="el-button el-button--primary el-button--mini"]').click() + # chrome.switch_to.default_content() + # chrome.switch_to.frame(chrome.find_element_by_xpath('(//iframe[@class="metro-main-frame"])[2]')) + # sleep(20) + while True: + try: + if chrome.find_element_by_xpath('//span[text()="%s"]'%orderno).is_displayed()==True: + print('//span[text()="%s"]'%orderno) + break + except: + continue + print('手术借出单创建完成') + end = time.clock() + print(start, end) + print('CPU执行时间: ', end - start) + imgInfo = getErrorPhoto(chrome) + imgName = imgInfo[0] + image_path = imgInfo[1] + info=orderno+'执行耗时'+str(end - start) + now = get_time() + writeFile_append(pro_path + '/logs/catalina.out', info) + send_email1(image_path, info) + except Exception as e: + print('出现异常') + # 将日志写入到文件中单独存储 + pro_path = get_pro_path() + traceback.print_exc() + imgInfo = getErrorPhoto(chrome) + imgName = imgInfo[0] + image_path = imgInfo[1] + print(imgName, image_path) + print(repr(e)) + info = repr(e) + now = get_time() + writeFile_append(pro_path + '/logs/logerror%s.txt' % now, info) + # send_email1(image_path, info) +if __name__ == "__main__": + # 创建多线程时, 需要制定该线程执行的任务.name线程名字 target目标函数名 + # t1 = threading.Thread(target=job,name="job1") + # t2 = threading.Thread(target=job,name="job2") + # t1.start() + # t2.start() + # opt = ChromeOptions() # 创建 Chrome 参数对象 + # # opt.headless = True # 把 Chrome 设置成无界面模式,windows/Linux 皆可 + # opt.headless = False # 把 Chrome 设置成无界面模式,windows/Linux 皆可 + # opt.add_argument('--start-maximized') + # opt.add_argument('--window-size=1280x1024') + # # chrome = Chrome(options=opt) # 创建无界面对象 + # chrome = WebChrome(chrome_options=opt) # airtest中的类 + + count=4 + for i in range(count): + t = threading.Thread(target=job) + t.start() + t.join() + +def start1(): + count = 5 + for i in range(count): + t = threading.Thread(target=job) + t.start() + t.join() + + # print(threading.active_count()) + # print("程序执行结束.....") + # create_salesorder() diff --git "a/testcase/od/\346\211\213\346\234\257\350\257\267\351\242\206\345\215\225.py" "b/testcase/od/\346\211\213\346\234\257\350\257\267\351\242\206\345\215\225.py" new file mode 100644 index 0000000000000000000000000000000000000000..69b4efc03a8060631f8350ad023258bdfcc68004 --- /dev/null +++ "b/testcase/od/\346\211\213\346\234\257\350\257\267\351\242\206\345\215\225.py" @@ -0,0 +1,348 @@ +import datetime +import threading +import time +import traceback + +from airtest.core.api import * +from selenium import webdriver +from selenium.webdriver import DesiredCapabilities +from selenium.webdriver.common.keys import Keys +from airtest_selenium.proxy import * +from selenium.webdriver import Chrome, ChromeOptions +from airtest.core.api import * +from airtest_selenium.proxy import * + +from mail1 import send_email1 +from public.tools import * + + + + +# chrome = webdriver.Chrome(chrome_options=opt) + +def job(): + print("这是一个需要执行的任务。。。。。") + create_salesorder() + print("当前线程的个数:", threading.active_count()) + time.sleep(1) + print("当前线程的信息:", threading.current_thread()) + + +def create_salesorder(type=1): + try: + import time + pro_path = get_pro_path() + start = time.clock() + # caps = DesiredCapabilities().CHROME + # caps["pageLoadStrategy"] = "normal" # complete + # caps["pageLoadStrategy"] = "eager" # interactive + # caps["pageLoadStrategy"] = "none" + # chrome = webdriver.Chrome(desired_capabilities=caps) + opt = ChromeOptions() # 创建 Chrome 参数对象 + # opt.headless = True # 把 Chrome 设置成无界面模式,windows/Linux 皆可 + opt.headless = False # 把 Chrome 设置成无界面模式,windows/Linux 皆可 + opt.add_argument('--start-maximized') + opt.add_argument('--window-size=1280x1024') + # chrome = Chrome(options=opt) # 创建无界面对象 + # chrome = WebChrome(chrome_options=opt) + chrome = WebChrome(chrome_options=opt) + # chrome=webdriver.Chrome() + chrome.implicitly_wait(20) + chrome.get("http://10.17.65.200:8088/portal/") + # chrome.get("http://10.17.65.207:8088/uat/r/w") + sleep(2) + chrome.implicitly_wait(30) + chrome.maximize_window() + chrome.find_element_by_id('input1').clear() + chrome.find_element_by_id('input1').send_keys('admin') + chrome.find_element_by_id('input2').clear() + chrome.find_element_by_id('input2').send_keys('Gyxc1234') + chrome.find_element_by_id('input2').send_keys(Keys.ENTER) + while True: + try: + if(chrome.find_element_by_xpath('//span[text()="退出"]').is_displayed()==True): + break + except: + continue + # 切换所属公司 + chrome.find_element_by_class_name('changeCom').click() + sleep(1) + chrome.find_element_by_xpath('//span[text()="国药集团北京医疗器械有限公司"]/following-sibling::button').click() + sleep(1) + chrome.find_element_by_xpath('// button[text() = "确定"]').click() + sleep(1) + # chrome.find_element_by_xpath('//div[text()="销售管理"]').click() + # actions = ActionChains(chrome) + # actions.move_to_element(chrome.find_element_by_xpath('//div[text()="销售业务"]')).perform() + # chrome.find_element_by_xpath('//span[text()="销售订单"]').click() + order_link = chrome.find_element_by_xpath('//span[text()="手术请领单"]') + chrome.execute_script("arguments[0].click();", order_link) + chrome.switch_to.frame(chrome.find_element_by_xpath('(//iframe[@class="metro-main-frame"])[2]')) + sleep(2) + chrome.find_element_by_xpath('//span[text()="新建"]').click() + sleep(2) + chrome.switch_to.frame(chrome.find_element_by_xpath('//iframe[contains(@name,"awsui-dialog-iframe")]')) + #获取订单号 + + orderno=chrome.find_element_by_xpath('//div[text() = "请领单号 "]/following-sibling::div/span').text + print(orderno) + # chrome.switch_to.default_content() + sleep(2) + # while True: + # try: + # if chrome.find_element_by_xpath('//div[text()="订单公司名称 "]').is_displayed(): + # print(chrome.find_element_by_xpath('//div[text()="订单公司名称 "]').text) + # break + # except: + # continue + # print(chrome.find_element_by_xpath('//div[text()="订单公司名称 "]').text) + sleep(2) + # chrome.find_element_by_xpath( + # '//div[text()="公司名称 "]/following-sibling::div/div/div/div/div/div/div/div/span/span/i').click() + # chrome.find_element_by_xpath('//input[@placeholder="模糊检索:公司名称,公司编码"]').send_keys('国药集团北京') + # chrome.find_element_by_xpath('//input[@placeholder="模糊检索:公司名称,公司编码"]').send_keys(Keys.ENTER) + # chrome.find_element_by_xpath('//button[@class="el-button el-button--primary el-button--mini"]').click() + # chrome.find_element_by_xpath('(//span[@class="el-radio__inner"])[1]').click() + # chrome.find_element_by_xpath('//span[@class="ensureBtn"]/button').click() + # chrome.find_element_by_xpath('//button[@class="el-button el-button--primary el-button--mini"]').click() + + # 业务员名称 + chrome.find_element_by_xpath( + '//div[text()="业务员名称 "]/following-sibling::div/div/div/div/div/div/div/div/span/span/i').click() + chrome.find_element_by_xpath('//input[@placeholder="模糊检索:员工编码,员工名称,部门编码,部门名称"]').send_keys('chenshuheng') + chrome.find_element_by_xpath('//input[@placeholder="模糊检索:员工编码,员工名称,部门编码,部门名称"]').send_keys( + Keys.ENTER) + chrome.find_element_by_xpath( + '(//div[text()="chenshuheng"])[3]/ancestor-or-self::td/preceding-sibling::td/div/label/span/span').click() + chrome.find_element_by_xpath('(//span[@class="ensureBtn"]/button[1])[1]').click() + + #手术类型 + chrome.find_element_by_xpath('(//input[@placeholder="请选择" and @type="text"])').click() + sleep(1) + chrome.find_element_by_xpath('//li[text()="初次手术"]').click() + sleep(1) + #手术种类 + chrome.find_element_by_xpath('(//input[@placeholder="请选择" and @type="text"])[2]').click() + sleep(1) + chrome.find_element_by_xpath('//li[text()="髋关节"]').click() + sleep(1) + chrome.find_element_by_xpath('//label[text()="手术日期 "]/following-sibling::div/div').click() + sleep(1) + chrome.find_element_by_xpath('//div[ @class ="el-date-table-cell"] // span[text()="31"]').click() + + #客户信息页签 + chrome.find_element_by_xpath('//div[text()="客户信息"]').click() + chrome.find_element_by_xpath('//div[text()="客户名称 "]/following-sibling::div/div/div/div/div/div/div/div/span/span/i').click() + chrome.find_element_by_xpath('//input[@placeholder="模糊检索:客户编码,客户名称"]').send_keys('北京大学第三医院') + chrome.find_element_by_xpath('//input[@placeholder="模糊检索:客户编码,客户名称"]').send_keys(Keys.ENTER) + # chrome.find_element_by_xpath('//span/input[@type="radio" and @value="03105272b49986351ef7eb2930b5454de"]').click() + btn_div= chrome.find_element_by_xpath('//span/input[@type="radio" and @value="02f94bb93be972567166f428524aa3b43"]') + chrome.execute_script("arguments[0].click();", btn_div) + chrome.find_element_by_xpath('(//button[@class="el-button el-button--primary el-button--default"])[3]').click() + + #医院名称 + chrome.find_element_by_xpath( + '//div[text()="医院名称 "]/following-sibling::div/div/div/div/div/div/div/div/span/span/i').click() + chrome.find_element_by_xpath('//input[@placeholder="模糊检索:客户编码,客商名称"]').send_keys('北京大学第三医院') + chrome.find_element_by_xpath('//input[@placeholder="模糊检索:客户编码,客商名称"]').send_keys(Keys.ENTER) + # chrome.find_element_by_xpath('//span/input[@type="radio" and @value="03105272b49986351ef7eb2930b5454de"]').click() + btn_div = chrome.find_element_by_xpath( + '//span/input[@type="radio" and @value="0c4d395678c596b20aa6c2a2fef3483d4"]') + chrome.execute_script("arguments[0].click();", btn_div) + chrome.find_element_by_xpath('(//button[@class="el-button el-button--primary el-button--default"])[4]').click() + + # chrome.find_element_by_xpath('//div[text()="仓库信息"]').click() + # chrome.find_element_by_xpath( + # '//div[text()="合同号 "]/following-sibling::div/div/div/div/div/div/div/div/span/span/i').click() + # chrome.find_element_by_xpath('//input[@placeholder="模糊检索:合同号,合同协议号,对方编码,项目名称,项目编码,业态编码,参考部门,参考部门编码,参考业务员,参考业务员编码,产品线名称,产品线编码,合同类型,合同属性"]').send_keys('38443') + # chrome.find_element_by_xpath('//input[@placeholder="模糊检索:合同号,合同协议号,对方编码,项目名称,项目编码,业态编码,参考部门,参考部门编码,参考业务员,参考业务员编码,产品线名称,产品线编码,合同类型,合同属性"]').send_keys(Keys.ENTER) + # chrome.find_element_by_xpath('//div[@class="multiple-header string_col" and text()="38443"]/ancestor-or-self::td/preceding-sibling::td/div/label/span/span').click() + # chrome.find_element_by_xpath('(//button[@class="el-button el-button--primary el-button--default"])[4]').click() + # #业务员名称 + # chrome.find_element_by_xpath( + # '//div[text()="业务员名称 "]/following-sibling::div/div/div/div/div/div/div/div/span/span/i').click() + # chrome.find_element_by_xpath('//input[@placeholder="模糊检索:业务员名称,业务员编码,业务部门名称,业务部门编码,部门类型编码"]').send_keys('杨春刚') + # chrome.find_element_by_xpath('//input[@placeholder="模糊检索:业务员名称,业务员编码,业务部门名称,业务部门编码,部门类型编码"]').send_keys(Keys.ENTER) + # chrome.find_element_by_xpath('(//div[text()="杨春刚"])[3]/ancestor-or-self::td/preceding-sibling::td/div/label/span/span').click() + # chrome.find_element_by_xpath('(//span[@class="ensureBtn"]/button[1])[4]').click() + # #其他信息页签 + # chrome.find_element_by_xpath('//div[text()="其他信息"]').click() + # chrome.find_element_by_xpath('//div[@cid="AWSUI.SwitchButton"]//div/div/div/div/span[1]').click() + # 子表信息录入 + chrome.find_element_by_xpath('//div[text()="主体信息"]').click() + chrome.find_element_by_xpath('//span[text()="添加商品"]').click() + chrome.find_element_by_xpath( + '//input[@placeholder="模糊检索:商品编码,商品名称"]').send_keys( + '10214724') + chrome.find_element_by_xpath( + '//input[@placeholder="模糊检索:商品编码,商品名称"]').send_keys( + Keys.ENTER) + sleep(1) + chrome.find_element_by_xpath('(//span[@class="el-checkbox__inner"])[4]').click() + chrome.find_element_by_xpath('(//div[@class="el-dialog__body"]/div[2]/span/button[1]/span)[4]').click() + sleep(3) + # 滚动条右拉 + # chrome.execute_script("document.getElementsByClassName('vxe-table--footer-wrapper body--wrapper')[0].scrollLeft = 2000"); + + element=chrome.find_element_by_xpath('//td[@colid="col_75"]') + element.click() + sleep(2) + # element.send_keys("1") + # chrome.execute_script("document.getElementsByClassName('awsui-input-number-right')[0].value='1'") + chrome.find_element_by_class_name('awsui-input-number-right').send_keys('1') + sleep(2) + chrome.find_element_by_xpath('//td[@colid="col_76"]').click() + #滚动条右拉 + # document.getElementsByClassName('vxe-table--footer-wrapper body--wrapper')[0].scrollLeft = 5000 + # chrome.execute_script("document.getElementsByClassName('vxe-table--footer-wrapper body--wrapper')[0].scrollLeft = 2000"); + # element = chrome.find_element_by_xpath('//td[@colid="col_197"]') + # element.click() + # sleep(6) + # chrome.execute_script("document.getElementsByClassName('awsui-input-number-right')[0].value='8'") + # sleep(2) + # element = chrome.find_element_by_xpath('//td[@colid="col_198"]') + # element.click() + # sleep(6) + # chrome.execute_script("document.getElementsByClassName('awsui-input-number-right')[0].value='8'") + # sleep(2) + # lock = threading.Lock() + # lock.acquire() + #方案一============================开始 + # if user_count<=5: + if type==1: + import datetime + now = datetime.datetime.now() + one_minutes_later = now + datetime.timedelta(minutes=1) + now = now.strftime('%Y-%m-%d %H:%M') + one_minutes_later = one_minutes_later.strftime('%Y-%m-%d %H:%M') + # print('bbbbbbbb'+one_minutes_later) + while True: + now = datetime.datetime.now().strftime('%Y-%m-%d %H:%M') + # print('变化的时间' + now) + if now == one_minutes_later: + print('时间到了') + chrome.find_element_by_xpath('//span[text()="提交"]').click() + break + # 方案一============================结束 + #方案二===============开始 + if type==2: + m=get_time_m() #当前时间的分钟 + m1=get_submit_time(m)#计划提交时间的分钟 + while True: + m2=get_time_m() #循环获取当前的分 + # sleep(60) + if (m2==m1): + chrome.find_element_by_xpath('//span[text()="提交"]').click() + break + #方案二===============结束 + # lock.release() + while True: + try: + if chrome.find_element_by_xpath('//p[text()="共享任务创建成功"]').is_displayed() == True: + # print('订单完成了') + break + except: + continue + # sleep(2) + # chrome.find_element_by_xpath('//button[@class="el-button el-button--primary el-button--mini"]').click() + # chrome.switch_to.default_content() + # chrome.switch_to.frame(chrome.find_element_by_xpath('(//iframe[@class="metro-main-frame"])[2]')) + # sleep(20) + while True: + try: + if chrome.find_element_by_xpath('//span[text()="%s"]'%orderno).is_displayed()==True: + print('//span[text()="%s"]'%orderno) + break + except: + continue + #进入手术配货单 + chrome.switch_to.default_content() + sleep(3) + chrome.find_element_by_xpath('//span[@class="awsui-tabs-icon close"]').click() + sleep(1) + order_link = chrome.find_element_by_xpath('//span[text()="手术配货单"]') + chrome.execute_script("arguments[0].click();", order_link) + chrome.switch_to.frame(chrome.find_element_by_xpath('(//iframe[@class="metro-main-frame"])[2]')) + sleep(2) + #输入请领单号 + chrome.find_element_by_xpath('//label[text()="请领单号"]/parent::div/div/div/div/input').send_keys(orderno) + sleep(1) + chrome.find_element_by_xpath('//label[text()="请领单号"]/parent::div/div/div/div/input').send_keys(Keys.ENTER) + sleep(1) + # chrome.switch_to.frame(chrome.find_element_by_xpath('//iframe[contains(@name,"awsui-dialog-iframe")]')) + sleep(1) + # text1 = chrome.find_element_by_xpath('(//span[text()="QLD23082800037B"])[2]').text + # print(text1) + chrome.find_element_by_xpath('//span[text()="%s"]//parent::div/parent::td//preceding-sibling::td[1]/div/span'%orderno).click() + # element = chrome.find_element_by_xpath('(//span[@class="vxe-checkbox--icon vxe-checkbox--unchecked-icon"])[2]') + # chrome.execute_script("arguments[0].click();", element) + sleep(1) + chrome.switch_to.frame(chrome.find_element_by_xpath('//iframe[contains(@name,"awsui-dialog-iframe")]')) + sleep(1) + start = time.clock() + chrome.find_element_by_xpath('//span[text()="提交"]').click() + while True: + try: + if chrome.find_element_by_xpath('//p[text()="流程结束"]').is_displayed() == True: + # print('订单完成了') + break + except: + continue + # chrome.find_element_by_xpath('//span[text()="批量提交"]').click() + sleep(1) + # chrome.find_element_by_xpath('//button[@class="el-button el-button--primary el-button--mini"]/span[text()="确定"]').click() + print('手术请领单创建完成') + end = time.clock() + print(start, end) + print('CPU执行时间: ', end - start) + imgInfo = getErrorPhoto(chrome) + imgName = imgInfo[0] + image_path = imgInfo[1] + info=orderno+'执行耗时'+str(end - start) + now = get_time() + writeFile_append(pro_path + '/logs/catalina.out', info) + send_email1(image_path, info) + except Exception as e: + print('出现异常') + # 将日志写入到文件中单独存储 + pro_path = get_pro_path() + traceback.print_exc() + imgInfo = getErrorPhoto(chrome) + imgName = imgInfo[0] + image_path = imgInfo[1] + print(imgName, image_path) + print(repr(e)) + info = repr(e) + now = get_time() + writeFile_append(pro_path + '/logs/logerror%s.txt' % now, info) + # send_email1(image_path, info) +if __name__ == "__main__": + # 创建多线程时, 需要制定该线程执行的任务.name线程名字 target目标函数名 + # t1 = threading.Thread(target=job,name="job1") + # t2 = threading.Thread(target=job,name="job2") + # t1.start() + # t2.start() + # opt = ChromeOptions() # 创建 Chrome 参数对象 + # # opt.headless = True # 把 Chrome 设置成无界面模式,windows/Linux 皆可 + # opt.headless = False # 把 Chrome 设置成无界面模式,windows/Linux 皆可 + # opt.add_argument('--start-maximized') + # opt.add_argument('--window-size=1280x1024') + # # chrome = Chrome(options=opt) # 创建无界面对象 + # chrome = WebChrome(chrome_options=opt) # airtest中的类 + + count=1 + for i in range(count): + t = threading.Thread(target=job) + t.start() + t.join() + +def start1(): + count = 5 + for i in range(count): + t = threading.Thread(target=job) + t.start() + t.join() + + # print(threading.active_count()) + # print("程序执行结束.....") + # create_salesorder() diff --git "a/testcase/od/\347\273\217\351\224\200\345\224\256\350\246\201\350\264\247\351\205\215\350\264\247.py" "b/testcase/od/\347\273\217\351\224\200\345\224\256\350\246\201\350\264\247\351\205\215\350\264\247.py" new file mode 100644 index 0000000000000000000000000000000000000000..f784c97b8efb373bcc9799f4e3cbe31ab602fa6a --- /dev/null +++ "b/testcase/od/\347\273\217\351\224\200\345\224\256\350\246\201\350\264\247\351\205\215\350\264\247.py" @@ -0,0 +1,359 @@ +import datetime +import threading +import time +import traceback + +from airtest.core.api import * +from selenium import webdriver +from selenium.webdriver import DesiredCapabilities +from selenium.webdriver.common.keys import Keys +from airtest_selenium.proxy import * +from selenium.webdriver import Chrome, ChromeOptions +from airtest.core.api import * +from airtest_selenium.proxy import * +from selenium.webdriver.support.select import Select + +from mail1 import send_email1 +from public.tools import * + + + + +# chrome = webdriver.Chrome(chrome_options=opt) + +def job(): + print("这是一个需要执行的任务。。。。。") + create_salesorder() + print("当前线程的个数:", threading.active_count()) + time.sleep(1) + print("当前线程的信息:", threading.current_thread()) +#配货函数 +def match_goods(chrome,orderno,type): + chrome.switch_to.default_content() + sleep(1) + element=chrome.find_element_by_xpath('//span[@class="awsui-tabs-icon close"]') + chrome.execute_script("arguments[0].click();", element) + sleep(1) + order_link = chrome.find_element_by_xpath('//span[text()="分配经销商要货"]') + chrome.execute_script("arguments[0].click();", order_link) + chrome.switch_to.frame(chrome.find_element_by_xpath('(//iframe[@class="metro-main-frame"])[2]')) + sleep(2) + chrome.switch_to.frame(chrome.find_element_by_xpath('//iframe[contains(@name,"awsui-dialog-iframe")]')) + sleep(2) + # chrome.find_element_by_class_name('select2-selection select2-selection--single').click() + # chrome.execute_script("document.getElementById('select2-purchasingCoOptSelect-container').click()") + # element = chrome.find_element_by_xpath('//b[@role="presentation"]') + # chrome.execute_script("arguments[0].click();", element) + s = Select(chrome.find_element_by_id('purchasingCoOptSelect')) + s.select_by_index(0) + sleep(2) + # chrome.find_element_by_xpath('//li[text()="北京大学第三医院(3)"]').click() + # sleep(1) + chrome.find_element_by_xpath('//span[text()="%s"]'%orderno).click() + sleep(4) + # 点击自动填充按钮 + chrome.find_element_by_xpath('//button[text()="自动填充"]').click() + # sleep(6) + while True: + try: + chrome.find_element_by_xpath('//button[text()="提交"]').click() + break + except: + continue + sleep(2) + # chrome.find_element_by_xpath('//a[text()="确认"]').click() + sleep(1) + + # 方案一============================开始 + if type == 1: + import datetime + now = datetime.datetime.now() + one_minutes_later = now + datetime.timedelta(minutes=1) + now = now.strftime('%Y-%m-%d %H:%M') + one_minutes_later = one_minutes_later.strftime('%Y-%m-%d %H:%M') + # print('bbbbbbbb'+one_minutes_later) + while True: + now = datetime.datetime.now().strftime('%Y-%m-%d %H:%M') + # print('变化的时间' + now) + if now == one_minutes_later: + print('时间到了') + start = time.clock() + print('提交订单开始时间', start) + chrome.find_element_by_xpath('//a[text()="确认"]').click() + break + # 方案一============================结束 + # 方案二===============开始 + if type == 2: + m = get_time_m() # 当前时间的分钟 + m1 = get_submit_time(m) # 计划提交时间的分钟 + print('销售订单计划提交时间的分钟', m1) + while True: + m2 = get_time_m() # 循环获取当前的分 + # sleep(30) + if (m2 == m1): + start = time.clock() + chrome.find_element_by_xpath('//a[text()="确认"]').click() + break + # 方案二===============结束 + while True: + try: + if chrome.find_element_by_xpath('//div[text()="提交成功"]').is_displayed() == True: + # print('订单完成了') + break + # else: + # print('共享任务创建成功的元素没有出现') + except: + continue + end = time.clock() + print(start, end) + print('CPU执行时间: ', end - start) + return str(end - start) +def create_salesorder(type=1): + try: + import time + pro_path = get_pro_path() + start = time.clock() + print('开始时间',start) + # caps = DesiredCapabilities().CHROME + # caps["pageLoadStrategy"] = "normal" # complete + # caps["pageLoadStrategy"] = "eager" # interactive + # caps["pageLoadStrategy"] = "none" + # chrome = webdriver.Chrome(desired_capabilities=caps) + opt = ChromeOptions() # 创建 Chrome 参数对象 + # opt.headless = True # 把 Chrome 设置成无界面模式,windows/Linux 皆可 + opt.headless = False # 把 Chrome 设置成无界面模式,windows/Linux 皆可 + opt.add_argument('--start-maximized') + opt.add_argument('--window-size=1280x1024') + # chrome = Chrome(options=opt) # 创建无界面对象 + # chrome = WebChrome(chrome_options=opt) + chrome = WebChrome(chrome_options=opt) + # chrome=webdriver.Chrome() + chrome.implicitly_wait(20) + chrome.get("http://10.17.65.200:8088/portal/") + # chrome.get("http://10.17.65.207:8088/uat/r/w") + sleep(2) + chrome.implicitly_wait(30) + # chrome.maximize_window() + chrome.find_element_by_id('input1').clear() + chrome.find_element_by_id('input1').send_keys('admin') + chrome.find_element_by_id('input2').clear() + chrome.find_element_by_id('input2').send_keys('Gyxc1234') + chrome.find_element_by_id('input2').send_keys(Keys.ENTER) + while True: + try: + if(chrome.find_element_by_xpath('//span[text()="退出"]').is_displayed()==True): + break + except: + continue + #切换所属公司 + chrome.find_element_by_class_name('changeCom').click() + sleep(1) + chrome.find_element_by_xpath('//span[text()="国药集团北京医疗器械有限公司"]/following-sibling::button').click() + sleep(1) + chrome.find_element_by_xpath('// button[text() = "确定"]').click() + sleep(1) + order_link = chrome.find_element_by_xpath('//span[text()="经销商要货申请"]') + chrome.execute_script("arguments[0].click();", order_link) + chrome.switch_to.frame(chrome.find_element_by_xpath('(//iframe[@class="metro-main-frame"])[2]')) + sleep(4) + chrome.find_element_by_xpath('//span[text()="新建"]').click() + sleep(4) + chrome.switch_to.frame(chrome.find_element_by_xpath('//iframe[contains(@name,"awsui-dialog-iframe")]')) + # 获取订单号 + + orderno = chrome.find_element_by_xpath('//div[text() = "要货申请单号 "]/following-sibling::div/span').text + print(orderno) + # chrome.switch_to.default_content() + sleep(4) + # while True: + # try: + # if chrome.find_element_by_xpath('//div[text()="订单公司名称 "]').is_displayed(): + # print(chrome.find_element_by_xpath('//div[text()="订单公司名称 "]').text) + # break + # except: + # continue + print(chrome.find_element_by_xpath('//div[text()="要货申请单号 "]').text) + + + sleep(2) + #客户名称 + chrome.find_element_by_xpath( + '//div[text()="客户名称 "]/following-sibling::div/div/div/div/div/div/div/div/span/span/i').click() + chrome.find_element_by_xpath('//input[@placeholder="模糊检索:客户编码,客户名称,收货地址,产品线名称,产品线编码"]').send_keys('北京大学') + chrome.find_element_by_xpath('//input[@placeholder="模糊检索:客户编码,客户名称,收货地址,产品线名称,产品线编码"]').send_keys(Keys.ENTER) + chrome.find_element_by_xpath('(//span[@class="el-radio__inner"])[1]').click() + + chrome.find_element_by_xpath('//span[@class="ensureBtn"]/button').click() + + #详细信息 + chrome.find_element_by_xpath('//div[text()="详细信息"]').click() + + chrome.find_element_by_xpath('//div[text()="合同/协议号 "]/following-sibling::div/div/div/div/div/div/div/div/span/span/i').click() + chrome.find_element_by_xpath('//input[@placeholder="模糊检索:合同协议号,合同号"]').send_keys('38443') + chrome.find_element_by_xpath('//input[@placeholder="模糊检索:合同协议号,合同号"]').send_keys(Keys.ENTER) + # chrome.find_element_by_xpath('//span/input[@type="radio" and @value="03105272b49986351ef7eb2930b5454de"]').click() + btn_div= chrome.find_element_by_xpath('//span/input[@type="radio" and @value="012001f8d35054875d6157d4715404319"]') + chrome.execute_script("arguments[0].click();", btn_div) + chrome.find_element_by_xpath('(//button[@class="el-button el-button--primary el-button--default"])[3]').click() + sleep(1) + + #业务员名称 + chrome.find_element_by_xpath( + '//div[text()="业务员名称 "]/following-sibling::div/div/div/div/div/div/div/div/span/span/i').click() + chrome.find_element_by_xpath('//input[@placeholder="模糊检索:业务员名称,业务员编码,业务部门名称,部门编码,部门类型编码"]').send_keys('chenshuheng') + chrome.find_element_by_xpath('//input[@placeholder="模糊检索:业务员名称,业务员编码,业务部门名称,部门编码,部门类型编码"]').send_keys(Keys.ENTER) + chrome.find_element_by_xpath('(//div[text()="chenshuheng"])[3]/ancestor-or-self::td/preceding-sibling::td/div/label/span/span').click() + chrome.find_element_by_xpath('(//span[@class="ensureBtn"]/button[1])[3]').click() + # #其他信息页签 + # chrome.find_element_by_xpath('//div[text()="其他信息"]').click() + # chrome.find_element_by_xpath('//div[@cid="AWSUI.SwitchButton"]//div/div/div/div/span[1]').click() + # 子表信息录入 + chrome.find_element_by_xpath('//div[text()="主体信息"]').click() + chrome.find_element_by_xpath('//span[text()="添加商品"]').click() + chrome.find_element_by_xpath( + '//input[@placeholder="模糊检索:商品编码,商品名称,规格型号,采购计量单位,销售计量单位,生产厂家编码"]').send_keys( + '10006179') + chrome.find_element_by_xpath( + '//input[@placeholder="模糊检索:商品编码,商品名称,规格型号,采购计量单位,销售计量单位,生产厂家编码"]').send_keys( + Keys.ENTER) + sleep(1) + chrome.find_element_by_xpath('(//span[@class="el-checkbox__inner"])[4]').click() + chrome.find_element_by_xpath('(//div[@class="el-dialog__body"]/div[2]/span/button[1]/span)[4]').click() + sleep(2) + element=chrome.find_element_by_xpath('//td[@colid="col_93"]') + element.click() + sleep(2) + # element.send_keys("1") + # chrome.execute_script("document.getElementsByClassName('awsui-input-number-right')[0].value='1'") + chrome.find_element_by_class_name('awsui-input-number-right').send_keys('1') + # chrome.find_element_by_xpath('//td[@colid="col_177"]/div/div').send_keys('1') + sleep(1) + chrome.find_element_by_xpath('//td[@colid="col_94"]').click() + sleep(4) + # #滚动条右拉 + # # document.getElementsByClassName('vxe-table--footer-wrapper body--wrapper')[0].scrollLeft = 5000 + # chrome.execute_script("document.getElementsByClassName('vxe-table--footer-wrapper body--wrapper')[0].scrollLeft = 2000"); + # element = chrome.find_element_by_xpath('//td[@colid="col_197"]') + # element.click() + # sleep(2) + # chrome.execute_script("document.getElementsByClassName('awsui-input-number-right')[0].value='8'") + # sleep(2) + # element = chrome.find_element_by_xpath('//td[@colid="col_198"]') + # element.click() + # sleep(2) + # chrome.execute_script("document.getElementsByClassName('awsui-input-number-right')[0].value='8'") + # sleep(2) + # lock = threading.Lock() + # lock.acquire() + chrome.find_element_by_xpath('//span[text()="提交"]').click() + + while True: + try: + if chrome.find_element_by_xpath('//p[text()="共享任务创建成功"]').is_displayed()==True: + # print('订单完成了') + break + # else: + # print('共享任务创建成功的元素没有出现') + except: + continue + # lock.release() + # sleep(2) + # chrome.find_element_by_xpath('//button[@class="el-button el-button--primary el-button--mini awsui-button awsui-button--primary"]//span[text()="确定"]').click() + # chrome.switch_to.default_content() + # chrome.switch_to.frame(chrome.find_element_by_xpath('(//iframe[@class="metro-main-frame"])[2]')) + # sleep(20) + # while True: + # try: + # if chrome.find_element_by_xpath('//span[text()="%s"]' % orderno).is_displayed() == True: + # print('//span[text()="%s"]' % orderno) + # break + # except: + # continue + while True: + try: + # if chrome.find_element_by_xpath('(//span[text()="%s"])[2]'%orderno).is_displayed()==True: + if chrome.find_element_by_xpath( + '//span[text() = "1"]/ancestor-or-self::td/following-sibling::td/div/span').is_displayed() == True: + # print('aaaaaaaaaaaaaaaaaaaaaaaa', chrome.find_element_by_xpath( + # '//span[text() = "1"]/ancestor-or-self::td/following-sibling::td/div/span').text) + break + except: + continue + print('经销售要货申请单创建完成') + #审批 + chrome.switch_to.default_content() + chrome.switch_to.frame(chrome.find_element_by_xpath('(//iframe[@class="metro-main-frame"])[2]')) + sleep(2) + chrome.find_element_by_xpath( + '//span[text() = "%s"]'%orderno).click() + chrome.switch_to.frame(chrome.find_element_by_xpath('//iframe[contains(@name,"awsui-dialog-iframe")]')) + + chrome.find_element_by_xpath('//span[text()="审核通过"]').click() + sleep(1) + chrome.find_element_by_xpath('//textarea[@placeholder="意见留言"]').send_keys('3333') + sleep(1) + chrome.find_element_by_xpath('//span[text()="发送"]').click() + while True: + try: + if chrome.find_element_by_xpath('//p[text()="共享任务创建成功"]').is_displayed() == True: + # print('订单完成了') + break + # else: + # print('共享任务创建成功的元素没有出现') + except: + continue + time1=match_goods(chrome, orderno,type) + # end = time.clock() + # print(start, end) + print('CPU执行时间: ', time1) + imgInfo = getErrorPhoto(chrome) + imgName = imgInfo[0] + image_path = imgInfo[1] + info=orderno+'执行耗时'+str(time1) + now = get_time() + writeFile_append(pro_path + '/logs/catalina.out', info) + send_email1(image_path, info) + except Exception as e: + print('出现异常') + # 将日志写入到文件中单独存储 + pro_path = get_pro_path() + traceback.print_exc() + imgInfo = getErrorPhoto(chrome) + imgName = imgInfo[0] + image_path = imgInfo[1] + print(imgName, image_path) + print(repr(e)) + info = repr(e) + now = get_time() + writeFile_append(pro_path + '/logs/logerror%s.txt' % now, info) + # send_email1(image_path, info) +if __name__ == "__main__": + # 创建多线程时, 需要制定该线程执行的任务.name线程名字 target目标函数名 + # t1 = threading.Thread(target=job,name="job1") + # t2 = threading.Thread(target=job,name="job2") + # t1.start() + # t2.start() + # opt = ChromeOptions() # 创建 Chrome 参数对象 + # # opt.headless = True # 把 Chrome 设置成无界面模式,windows/Linux 皆可 + # opt.headless = False # 把 Chrome 设置成无界面模式,windows/Linux 皆可 + # opt.add_argument('--start-maximized') + # opt.add_argument('--window-size=1280x1024') + # # chrome = Chrome(options=opt) # 创建无界面对象 + # chrome = WebChrome(chrome_options=opt) # airtest中的类 + + count=1 + for i in range(count): + t = threading.Thread(target=job) + t.start() + t.join() + +def start1(): + count = 1 + for i in range(count): + t = threading.Thread(target=job) + t.start() + t.join() + + # print(threading.active_count()) + # print("程序执行结束.....") + # create_salesorder() diff --git "a/testcase/od/\350\260\203\346\213\250\345\207\272\345\272\223\345\215\225.py" "b/testcase/od/\350\260\203\346\213\250\345\207\272\345\272\223\345\215\225.py" new file mode 100644 index 0000000000000000000000000000000000000000..1346df14d2e5a17700ee68b5ede3e7bc5b9dee60 --- /dev/null +++ "b/testcase/od/\350\260\203\346\213\250\345\207\272\345\272\223\345\215\225.py" @@ -0,0 +1,286 @@ +import datetime +import threading +import time +import traceback + +from airtest.core.api import * +from selenium import webdriver +from selenium.webdriver import DesiredCapabilities +from selenium.webdriver.common.keys import Keys +from airtest_selenium.proxy import * +from selenium.webdriver import Chrome, ChromeOptions +from airtest.core.api import * +from airtest_selenium.proxy import * + +from mail1 import send_email1 +from public.tools import * + + + + +# chrome = webdriver.Chrome(chrome_options=opt) + +def job(): + print("这是一个需要执行的任务。。。。。") + create_salesorder1(1) + print("当前线程的个数:", threading.active_count()) + time.sleep(1) + print("当前线程的信息:", threading.current_thread()) + + +def create_salesorder1(type=2): + import time + start = time.clock() + # caps = DesiredCapabilities().CHROME + # caps["pageLoadStrategy"] = "normal" # complete + # caps["pageLoadStrategy"] = "eager" # interactive + # caps["pageLoadStrategy"] = "none" + # chrome = webdriver.Chrome(desired_capabilities=caps) + opt = ChromeOptions() # 创建 Chrome 参数对象 + # opt.headless = True # 把 Chrome 设置成无界面模式,windows/Linux 皆可 + opt.headless = False # 把 Chrome 设置成无界面模式,windows/Linux 皆可 + opt.add_argument('--start-maximized') + opt.add_argument('--window-size=1280x1024') + # chrome = Chrome(options=opt) # 创建无界面对象 + # chrome = WebChrome(chrome_options=opt) + chrome = WebChrome(chrome_options=opt) + # chrome=webdriver.Chrome() + chrome.implicitly_wait(20) + chrome.get("http://10.17.65.200:8088/portal/") + # chrome.get("http://10.17.65.207:8088/uat/r/w") + sleep(2) + chrome.implicitly_wait(30) + # chrome.maximize_window() + chrome.find_element_by_id('input1').clear() + chrome.find_element_by_id('input1').send_keys('admin') + chrome.find_element_by_id('input2').clear() + chrome.find_element_by_id('input2').send_keys('Gyxc1234') + chrome.find_element_by_id('input2').send_keys(Keys.ENTER) + while True: + try: + if(chrome.find_element_by_xpath('//span[text()="退出"]').is_displayed()==True): + break + except: + continue + # 切换所属公司 + chrome.find_element_by_class_name('changeCom').click() + sleep(1) + chrome.find_element_by_xpath('//span[text()="国药集团北京医疗器械有限公司"]/following-sibling::button').click() + sleep(1) + chrome.find_element_by_xpath('// button[text() = "确定"]').click() + sleep(1) + allot_link = chrome.find_element_by_xpath('//span[text()="调拨出库单"]') + chrome.execute_script("arguments[0].click();", allot_link) + chrome.switch_to.frame(chrome.find_element_by_xpath('(//iframe[@class="metro-main-frame"])[2]')) + sleep(4) + chrome.find_element_by_xpath('//span[text()="新建"]').click() + sleep(4) + chrome.switch_to.frame(chrome.find_element_by_xpath('//iframe[contains(@name,"awsui-dialog-iframe")]')) + #获取调拨出库单号 + + orderno=chrome.find_element_by_xpath('//div[text() = "调拨出库订单号 "]/following-sibling::div/span').text + print(orderno) + # chrome.switch_to.default_content() + sleep(4) + # while True: + # try: + # if chrome.find_element_by_xpath('//div[text()="订单公司名称 "]').is_displayed(): + # print(chrome.find_element_by_xpath('//div[text()="订单公司名称 "]').text) + # break + # except: + # continue + print(chrome.find_element_by_xpath('//div[text()="公司名称 "]').text) + + + sleep(2) + chrome.find_element_by_xpath( + '//div[text()="公司名称 "]/following-sibling::div/div/div/div/div/div/div/div/span/span/i').click() + chrome.find_element_by_xpath('//input[@placeholder="模糊检索:公司名称,公司编码"]').send_keys('国药集团北京') + chrome.find_element_by_xpath('//input[@placeholder="模糊检索:公司名称,公司编码"]').send_keys(Keys.ENTER) + sleep(2) + chrome.find_element_by_xpath('(//span[@class="el-radio__inner"])[1]').click() + + chrome.find_element_by_xpath('//span[@class="ensureBtn"]/button').click() + chrome.find_element_by_xpath('//button[@class="el-button el-button--primary el-button--mini"]').click() + + # chrome.find_element_by_xpath('//div[text()="出库仓库 "]/following-sibling::div/div/div/div/div/div/div/div/span/span/i').click() + # chrome.find_element_by_xpath('//input[@placeholder="模糊检索:仓库编码,仓库名称,是否传WMS,所属公司名称"]').send_keys('北京强生非') + # chrome.find_element_by_xpath('//input[@placeholder="模糊检索:仓库编码,仓库名称,是否传WMS,所属公司名称"]').send_keys(Keys.ENTER) + # # chrome.find_element_by_xpath('//span/input[@type="radio" and @value="03105272b49986351ef7eb2930b5454de"]').click() + # btn_div= chrome.find_element_by_xpath('//span/input[@type="radio" and @value="03105272b49986351ef7eb2930b5454de"]') + # chrome.execute_script("arguments[0].click();", btn_div) + # chrome.find_element_by_xpath('(//button[@class="el-button el-button--primary el-button--default"])[3]').click() + # chrome.find_element_by_xpath('//div[text()="客户及合同信息"]').click() + # chrome.find_element_by_xpath( + # '//div[text()="合同号 "]/following-sibling::div/div/div/div/div/div/div/div/span/span/i').click() + # chrome.find_element_by_xpath('//input[@placeholder="模糊检索:合同号,合同协议号,对方编码,项目名称,项目编码,业态编码,参考部门,参考部门编码,参考业务员,参考业务员编码,产品线名称,产品线编码,合同类型,合同属性"]').send_keys('38443') + # chrome.find_element_by_xpath('//input[@placeholder="模糊检索:合同号,合同协议号,对方编码,项目名称,项目编码,业态编码,参考部门,参考部门编码,参考业务员,参考业务员编码,产品线名称,产品线编码,合同类型,合同属性"]').send_keys(Keys.ENTER) + # chrome.find_element_by_xpath('//div[@class="multiple-header string_col" and text()="38443"]/ancestor-or-self::td/preceding-sibling::td/div/label/span/span').click() + # chrome.find_element_by_xpath('(//button[@class="el-button el-button--primary el-button--default"])[4]').click() + #业务员名称 + sleep(1) + chrome.find_element_by_xpath( + '//div[text()="业务员 "]/following-sibling::div/div/div/div/div/div/div/div/span/span/i').click() + chrome.find_element_by_xpath('//input[@placeholder="模糊检索:业务员名称,业务员编码,部门名称,部门编码,部门类型"]').send_keys('杨春刚') + chrome.find_element_by_xpath('//input[@placeholder="模糊检索:业务员名称,业务员编码,部门名称,部门编码,部门类型"]').send_keys(Keys.ENTER) + chrome.find_element_by_xpath('(//div[text()="杨春刚"])[3]/ancestor-or-self::td/preceding-sibling::td/div/label/span/span').click() + chrome.find_element_by_xpath('(//span[@class="ensureBtn"]/button[1])[2]').click() + #仓库信息页签 + chrome.find_element_by_xpath('//div[text()="仓库信息"]').click() + #调拨出库仓库名称 + chrome.find_element_by_xpath( + '//div[text()="调拨出库仓库名称 "]/following-sibling::div/div/div/div/div/div/div/div/span/span/i').click() + chrome.find_element_by_xpath('//input[@placeholder="模糊检索:调拨出库仓库名称,调拨出库仓库编码,是否WMS仓"]').send_keys('北京强生非') + chrome.find_element_by_xpath('//input[@placeholder="模糊检索:调拨出库仓库名称,调拨出库仓库编码,是否WMS仓"]').send_keys(Keys.ENTER) + # chrome.find_element_by_xpath('//span/input[@type="radio" and @value="03105272b49986351ef7eb2930b5454de"]').click() + btn_div= chrome.find_element_by_xpath('//span/input[@type="radio" and @value="08374712eb9413253c6281062de2ab877"]') + chrome.execute_script("arguments[0].click();", btn_div) + chrome.find_element_by_xpath('(//span[@class="ensureBtn"])[3]/button').click() + + # 调拨入库仓库名称 + chrome.find_element_by_xpath( + '//div[text()="调拨入库仓库名称 "]/following-sibling::div/div/div/div/div/div/div/div/span/span/i').click() + chrome.find_element_by_xpath('//input[@placeholder="模糊检索:调拨入库仓库名称,调拨入库仓库编码,是否WMS"]').send_keys('北京公司-宁波仓') + chrome.find_element_by_xpath('//input[@placeholder="模糊检索:调拨入库仓库名称,调拨入库仓库编码,是否WMS"]').send_keys(Keys.ENTER) + # chrome.find_element_by_xpath('//span/input[@type="radio" and @value="03105272b49986351ef7eb2930b5454de"]').click() + btn_div = chrome.find_element_by_xpath('//span/input[@type="radio" and @value="0e455e227177d35f275908320e3e32fe9"]') + chrome.execute_script("arguments[0].click();", btn_div) + chrome.find_element_by_xpath('(//span[@class="ensureBtn"])[4]/button').click() + + # 子表信息录入 + chrome.find_element_by_xpath('//div[text()="主体信息"]').click() + chrome.find_element_by_xpath('//span[text()="添加商品"]').click() + chrome.find_element_by_xpath( + '//input[@placeholder="模糊检索:商品编码,商品全称,规格型号,主计量单位,采购计量单位,厂家物料编码,存储条件,存储条件说明,生产企业编码,行类型,件包数,产品备注,产品描述,商品性质,是否免备案"]').send_keys( + '10006179') + chrome.find_element_by_xpath( + '//input[@placeholder="模糊检索:商品编码,商品全称,规格型号,主计量单位,采购计量单位,厂家物料编码,存储条件,存储条件说明,生产企业编码,行类型,件包数,产品备注,产品描述,商品性质,是否免备案"]').send_keys( + Keys.ENTER) + sleep(1) + chrome.find_element_by_xpath('(//span[@class="el-checkbox__inner"])[4]').click() + chrome.find_element_by_xpath('(//div[@class="el-dialog__body"]/div[2]/span/button[1]/span)[5]').click() + sleep(3) + element=chrome.find_element_by_xpath('//td[@colid="col_108"]') + element.click() + sleep(3) + # element.send_keys("1") + # chrome.execute_script("document.getElementsByClassName('awsui-input-number-right')[0].value='1'") + chrome.find_element_by_class_name('awsui-input-number-right').send_keys('1') + sleep(4) + #滚动条右拉 + # document.getElementsByClassName('vxe-table--footer-wrapper body--wrapper')[0].scrollLeft = 5000 + chrome.execute_script("document.getElementsByClassName('vxe-table--footer-wrapper body--wrapper')[0].scrollLeft = 2000"); + # element = chrome.find_element_by_xpath('//td[@colid="col_197"]') + # element.click() + # sleep(6) + # chrome.execute_script("document.getElementsByClassName('awsui-input-number-right')[0].value='8'") + # sleep(2) + # element = chrome.find_element_by_xpath('//td[@colid="col_198"]') + # element.click() + # sleep(6) + # chrome.execute_script("document.getElementsByClassName('awsui-input-number-right')[0].value='8'") + # sleep(2) + # lock = threading.Lock() + # lock.acquire() + #方案一============================开始 + if type==1: + import datetime + now = datetime.datetime.now() + one_minutes_later = now + datetime.timedelta(minutes=1) + now = now.strftime('%Y-%m-%d %H:%M') + one_minutes_later = one_minutes_later.strftime('%Y-%m-%d %H:%M') + # print('bbbbbbbb'+one_minutes_later) + while True: + now = datetime.datetime.now().strftime('%Y-%m-%d %H:%M') + # print('变化的时间' + now) + if now == one_minutes_later: + print('时间到了') + start = time.clock() + chrome.find_element_by_xpath('//span[text()="提交"]').click() + break + # 方案一============================结束 + #方案二===============开始 + if type==2: + m=get_time_m() #当前时间的分钟 + m1=get_submit_time(m)#计划提交时间的分钟 + print('调拨计划提交时间',m1) + while True: + m2=get_time_m() #循环获取当前的分 + # sleep(30) + if (m2==m1): + start = time.clock() + chrome.find_element_by_xpath('//span[text()="提交"]').click() + break + #方案二===============结束 + while True: + try: + if chrome.find_element_by_xpath('//p[text()="共享任务创建成功"]').is_displayed() == True: + # print('订单完成了') + break + except: + continue + # lock.release() + # sleep(5) + # chrome.find_element_by_xpath('//button[@class="el-button el-button--primary el-button--mini awsui-button awsui-button--primary"]//span[text()="确定"]').click() + chrome.switch_to.default_content() + chrome.switch_to.frame(chrome.find_element_by_xpath('(//iframe[@class="metro-main-frame"])[2]')) + # sleep(20) + while True: + try: + if chrome.find_element_by_xpath('(//span[text()="%s"])[2]'%orderno).is_displayed()==True: + print('//span[text()="%s"]'%orderno) + break + except: + continue + print('调拨出库单创建完成') + end = time.clock() + print(start, end) + print('CPU执行时间: ', end - start) + time1=end - start + imgInfo = getErrorPhoto(chrome) + imgName = imgInfo[0] + image_path = imgInfo[1] + info=orderno+',耗时'+str(time1) + now = get_time() + pro_path = get_pro_path() + writeFile_append(pro_path + '/logs/catalina.out', info) + send_email1(image_path, info) +if __name__ == "__main__": + # 创建多线程时, 需要制定该线程执行的任务.name线程名字 target目标函数名 + # t1 = threading.Thread(target=job,name="job1") + # t2 = threading.Thread(target=job,name="job2") + # t1.start() + # t2.start() + # opt = ChromeOptions() # 创建 Chrome 参数对象 + # # opt.headless = True # 把 Chrome 设置成无界面模式,windows/Linux 皆可 + # opt.headless = False # 把 Chrome 设置成无界面模式,windows/Linux 皆可 + # opt.add_argument('--start-maximized') + # opt.add_argument('--window-size=1280x1024') + # # chrome = Chrome(options=opt) # 创建无界面对象 + # chrome = WebChrome(chrome_options=opt) # airtest中的类 + pro_path = get_pro_path() + + try: + for i in range(1): + t = threading.Thread(target=job) + t.start() + # t.join() + except Exception as e: + print('出现异常') + # 将日志写入到文件中单独存储 + pro_path = get_pro_path() + traceback.print_exc() + # imgInfo = getErrorPhoto(chrome) + # imgName = imgInfo[0] + # image_path = imgInfo[1] + # print(imgName, image_path) + print(repr(e)) + info = repr(e) + now = get_time() + writeFile_append(pro_path + '/logs/logerror%s.txt' % now, info) + # send_email1(image_path, info) + + + # print(threading.active_count()) + # print("程序执行结束.....") + # create_salesorder() diff --git "a/testcase/od/\351\224\200\345\224\256\350\256\242\345\215\225.py" "b/testcase/od/\351\224\200\345\224\256\350\256\242\345\215\225.py" new file mode 100644 index 0000000000000000000000000000000000000000..49562d3b20af6c1920bfca1222286622edde071e --- /dev/null +++ "b/testcase/od/\351\224\200\345\224\256\350\256\242\345\215\225.py" @@ -0,0 +1,281 @@ +import datetime +import threading +import time +import traceback + +from airtest.core.api import * +from selenium import webdriver +from selenium.webdriver import DesiredCapabilities +from selenium.webdriver.common.keys import Keys +from airtest_selenium.proxy import * +from selenium.webdriver import Chrome, ChromeOptions +from airtest.core.api import * +from airtest_selenium.proxy import * + +from mail1 import send_email1 +from public.tools import * + + + + +# chrome = webdriver.Chrome(chrome_options=opt) + +def job(): + print("这是一个需要执行的任务。。。。。") + create_salesorder() + print("当前线程的个数:", threading.active_count()) + time.sleep(1) + print("当前线程的信息:", threading.current_thread()) + + +def create_salesorder(type=1,username="admin",password="Gyxc1234"): + try: + import time + pro_path = get_pro_path() + start = time.clock() + print('开始时间',start) + # caps = DesiredCapabilities().CHROME + # caps["pageLoadStrategy"] = "normal" # complete + # caps["pageLoadStrategy"] = "eager" # interactive + # caps["pageLoadStrategy"] = "none" + # chrome = webdriver.Chrome(desired_capabilities=caps) + opt = ChromeOptions() # 创建 Chrome 参数对象 + # opt.headless = True # 把 Chrome 设置成无界面模式,windows/Linux 皆可 + opt.headless = False # 把 Chrome 设置成无界面模式,windows/Linux 皆可 + opt.add_argument('--start-maximized') + opt.add_argument('--window-size=1280x1024') + # chrome = Chrome(options=opt) # 创建无界面对象 + # chrome = WebChrome(chrome_options=opt) + chrome = WebChrome(chrome_options=opt) + # chrome=webdriver.Chrome() + chrome.implicitly_wait(20) + chrome.get("http://10.17.65.200:8088/portal/") + # chrome.get("http://10.17.65.207:8088/uat/r/w") + sleep(2) + chrome.implicitly_wait(30) + # chrome.maximize_window() + chrome.find_element_by_id('input1').clear() + chrome.find_element_by_id('input1').send_keys('admin') + chrome.find_element_by_id('input2').clear() + chrome.find_element_by_id('input2').send_keys('Gyxc1234') + chrome.find_element_by_id('input2').send_keys(Keys.ENTER) + while True: + try: + if(chrome.find_element_by_xpath('//span[text()="退出"]').is_displayed()==True): + break + except: + continue + #切换所属公司 + chrome.find_element_by_class_name('changeCom').click() + sleep(1) + chrome.find_element_by_xpath('//span[text()="国药集团北京医疗器械有限公司"]/following-sibling::button').click() + sleep(1) + chrome.find_element_by_xpath('// button[text() = "确定"]').click() + sleep(1) + # chrome.find_element_by_xpath('//div[text()="销售管理"]').click() + # actions = ActionChains(chrome) + # actions.move_to_element(chrome.find_element_by_xpath('//div[text()="销售业务"]')).perform() + # chrome.find_element_by_xpath('//span[text()="销售订单"]').click() + order_link = chrome.find_element_by_xpath('//span[text()="销售订单"]') + chrome.execute_script("arguments[0].click();", order_link) + chrome.switch_to.frame(chrome.find_element_by_xpath('(//iframe[@class="metro-main-frame"])[2]')) + sleep(4) + chrome.find_element_by_xpath('//span[text()="新建"]').click() + sleep(4) + chrome.switch_to.frame(chrome.find_element_by_xpath('//iframe[contains(@name,"awsui-dialog-iframe")]')) + #获取订单号 + + orderno=chrome.find_element_by_xpath('//div[text() = "销售订单号 "]/following-sibling::div/span').text + print(orderno) + # chrome.switch_to.default_content() + sleep(4) + # while True: + # try: + # if chrome.find_element_by_xpath('//div[text()="订单公司名称 "]').is_displayed(): + # print(chrome.find_element_by_xpath('//div[text()="订单公司名称 "]').text) + # break + # except: + # continue + print(chrome.find_element_by_xpath('//div[text()="订单公司名称 "]').text) + + + sleep(2) + chrome.find_element_by_xpath( + '//div[text()="订单公司名称 "]/following-sibling::div/div/div/div/div/div/div/div/span/span/i').click() + chrome.find_element_by_xpath('//input[@placeholder="模糊检索:公司名称,公司编码"]').send_keys('国药集团北京') + chrome.find_element_by_xpath('//input[@placeholder="模糊检索:公司名称,公司编码"]').send_keys(Keys.ENTER) + chrome.find_element_by_xpath('(//span[@class="el-radio__inner"])[1]').click() + + chrome.find_element_by_xpath('//span[@class="ensureBtn"]/button').click() + chrome.find_element_by_xpath('//button[@class="el-button el-button--primary el-button--mini"]').click() + chrome.find_element_by_xpath('//div[text()="出库仓库 "]/following-sibling::div/div/div/div/div/div/div/div/span/span/i').click() + chrome.find_element_by_xpath('//input[@placeholder="模糊检索:仓库编码,仓库名称,是否传WMS,所属公司名称"]').send_keys('北京强生非') + chrome.find_element_by_xpath('//input[@placeholder="模糊检索:仓库编码,仓库名称,是否传WMS,所属公司名称"]').send_keys(Keys.ENTER) + # chrome.find_element_by_xpath('//span/input[@type="radio" and @value="03105272b49986351ef7eb2930b5454de"]').click() + btn_div= chrome.find_element_by_xpath('//span/input[@type="radio" and @value="03105272b49986351ef7eb2930b5454de"]') + chrome.execute_script("arguments[0].click();", btn_div) + chrome.find_element_by_xpath('(//button[@class="el-button el-button--primary el-button--default"])[3]').click() + sleep(1) + chrome.find_element_by_xpath('//div[text()="客户及合同信息"]').click() + chrome.find_element_by_xpath( + '//div[text()="合同号 "]/following-sibling::div/div/div/div/div/div/div/div/span/span/i').click() + chrome.find_element_by_xpath('//input[@placeholder="模糊检索:合同号,合同协议号,对方编码,项目名称,项目编码,业态编码,参考部门,参考部门编码,参考业务员,参考业务员编码,产品线名称,产品线编码,合同类型,合同属性"]').send_keys('38443') + chrome.find_element_by_xpath('//input[@placeholder="模糊检索:合同号,合同协议号,对方编码,项目名称,项目编码,业态编码,参考部门,参考部门编码,参考业务员,参考业务员编码,产品线名称,产品线编码,合同类型,合同属性"]').send_keys(Keys.ENTER) + chrome.find_element_by_xpath('//div[@class="multiple-header string_col" and text()="38443"]/ancestor-or-self::td/preceding-sibling::td/div/label/span/span').click() + chrome.find_element_by_xpath('(//button[@class="el-button el-button--primary el-button--default"])[4]').click() + #业务员名称 + chrome.find_element_by_xpath( + '//div[text()="业务员名称 "]/following-sibling::div/div/div/div/div/div/div/div/span/span/i').click() + chrome.find_element_by_xpath('//input[@placeholder="模糊检索:业务员名称,业务员编码,业务部门名称,业务部门编码,部门类型编码"]').send_keys('杨春刚') + chrome.find_element_by_xpath('//input[@placeholder="模糊检索:业务员名称,业务员编码,业务部门名称,业务部门编码,部门类型编码"]').send_keys(Keys.ENTER) + chrome.find_element_by_xpath('(//div[text()="杨春刚"])[3]/ancestor-or-self::td/preceding-sibling::td/div/label/span/span').click() + chrome.find_element_by_xpath('(//span[@class="ensureBtn"]/button[1])[4]').click() + #其他信息页签 + chrome.find_element_by_xpath('//div[text()="其他信息"]').click() + chrome.find_element_by_xpath('//div[@cid="AWSUI.SwitchButton"]//div/div/div/div/span[1]').click() + # 子表信息录入 + chrome.find_element_by_xpath('//div[text()="主体信息"]').click() + chrome.find_element_by_xpath('//span[text()="添加商品"]').click() + chrome.find_element_by_xpath( + '//input[@placeholder="模糊检索:商品编码,商品名称,规格型号,主计量单位,销售计量单位,厂家物料编码,存储条件说明,生产企业编码,供应商编码,行类型,商品性质,批发价,进口/国产/港澳台,件包数,产品备注,是否免备案,产品描述"]').send_keys( + '10006179') + chrome.find_element_by_xpath( + '//input[@placeholder="模糊检索:商品编码,商品名称,规格型号,主计量单位,销售计量单位,厂家物料编码,存储条件说明,生产企业编码,供应商编码,行类型,商品性质,批发价,进口/国产/港澳台,件包数,产品备注,是否免备案,产品描述"]').send_keys( + Keys.ENTER) + sleep(1) + chrome.find_element_by_xpath('(//span[@class="el-checkbox__inner"])[4]').click() + chrome.find_element_by_xpath('(//div[@class="el-dialog__body"]/div[2]/span/button[1]/span)[5]').click() + sleep(2) + element=chrome.find_element_by_xpath('//td[@colid="col_177"]') + element.click() + sleep(2) + # element.send_keys("1") + # chrome.execute_script("document.getElementsByClassName('awsui-input-number-right')[0].value='1'") + chrome.find_element_by_class_name('awsui-input-number-right').send_keys('1') + # chrome.find_element_by_xpath('//td[@colid="col_177"]/div/div').send_keys('1') + sleep(1) + chrome.find_element_by_xpath('//td[@colid="col_178"]').click() + sleep(4) + #滚动条右拉 + # document.getElementsByClassName('vxe-table--footer-wrapper body--wrapper')[0].scrollLeft = 5000 + chrome.execute_script("document.getElementsByClassName('vxe-table--footer-wrapper body--wrapper')[0].scrollLeft = 2000"); + element = chrome.find_element_by_xpath('//td[@colid="col_197"]') + element.click() + sleep(2) + chrome.execute_script("document.getElementsByClassName('awsui-input-number-right')[0].value='8'") + sleep(2) + element = chrome.find_element_by_xpath('//td[@colid="col_198"]') + element.click() + sleep(2) + chrome.execute_script("document.getElementsByClassName('awsui-input-number-right')[0].value='8'") + sleep(2) + # lock = threading.Lock() + # lock.acquire() + #方案一============================开始 + if type==1: + import datetime + now = datetime.datetime.now() + one_minutes_later = now + datetime.timedelta(minutes=1) + now = now.strftime('%Y-%m-%d %H:%M') + one_minutes_later = one_minutes_later.strftime('%Y-%m-%d %H:%M') + # print('bbbbbbbb'+one_minutes_later) + while True: + now = datetime.datetime.now().strftime('%Y-%m-%d %H:%M') + # print('变化的时间' + now) + if now == one_minutes_later: + print('时间到了') + start = time.clock() + print('提交订单开始时间',start) + chrome.find_element_by_xpath('//span[text()="提交"]').click() + break + # 方案一============================结束 + #方案二===============开始 + if type==2: + m=get_time_m() #当前时间的分钟 + m1=get_submit_time(m)#计划提交时间的分钟 + print('销售订单计划提交时间的分钟',m1) + while True: + m2=get_time_m() #循环获取当前的分 + # sleep(30) + if (m2==m1): + chrome.find_element_by_xpath('//span[text()="提交"]').click() + break + #方案二===============结束 + # lock.release() + sleep(2) + # chrome.find_element_by_xpath('//button[@class="el-button el-button--primary el-button--mini awsui-button awsui-button--primary"]//span[text()="确定"]').click() + # chrome.switch_to.default_content() + # chrome.switch_to.frame(chrome.find_element_by_xpath('(//iframe[@class="metro-main-frame"])[2]')) + # sleep(20) + # while True: + # try: + # if chrome.find_element_by_xpath('//span[text()="%s"]' % orderno).is_displayed() == True: + # print('//span[text()="%s"]' % orderno) + # break + # except: + # continue + while True: + try: + # if chrome.find_element_by_xpath('(//span[text()="%s"])[2]'%orderno).is_displayed()==True: + if chrome.find_element_by_xpath( + '//span[text() = "1"]/ancestor-or-self::td/following-sibling::td/div/span').is_displayed() == True: + print('aaaaaaaaaaaaaaaaaaaaaaaa', chrome.find_element_by_xpath( + '//span[text() = "1"]/ancestor-or-self::td/following-sibling::td/div/span').text) + break + except: + continue + print('销售订单创建完成') + end = time.clock() + print(start, end) + print('CPU执行时间: ', end - start) + imgInfo = getErrorPhoto(chrome) + imgName = imgInfo[0] + image_path = imgInfo[1] + info=orderno+'执行耗时'+str(end - start) + now = get_time() + writeFile_append(pro_path + '/logs/catalina.out', info) + send_email1(image_path, info) + except Exception as e: + print('出现异常') + # 将日志写入到文件中单独存储 + pro_path = get_pro_path() + traceback.print_exc() + imgInfo = getErrorPhoto(chrome) + imgName = imgInfo[0] + image_path = imgInfo[1] + print(imgName, image_path) + print(repr(e)) + info = repr(e) + now = get_time() + writeFile_append(pro_path + '/logs/logerror%s.txt' % now, info) + # send_email1(image_path, info) +if __name__ == "__main__": + # 创建多线程时, 需要制定该线程执行的任务.name线程名字 target目标函数名 + # t1 = threading.Thread(target=job,name="job1") + # t2 = threading.Thread(target=job,name="job2") + # t1.start() + # t2.start() + # opt = ChromeOptions() # 创建 Chrome 参数对象 + # # opt.headless = True # 把 Chrome 设置成无界面模式,windows/Linux 皆可 + # opt.headless = False # 把 Chrome 设置成无界面模式,windows/Linux 皆可 + # opt.add_argument('--start-maximized') + # opt.add_argument('--window-size=1280x1024') + # # chrome = Chrome(options=opt) # 创建无界面对象 + # chrome = WebChrome(chrome_options=opt) # airtest中的类 + + count=1 + for i in range(count): + t = threading.Thread(target=job) + t.start() + t.join() + +def start1(): + count = 1 + for i in range(count): + t = threading.Thread(target=job) + t.start() + t.join() + + # print(threading.active_count()) + # print("程序执行结束.....") + # create_salesorder() diff --git a/testcase/test_scene1/__init__.py b/testcase/test_scene1/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/testcase/test_scene1/scene1_mainflow.py b/testcase/test_scene1/scene1_mainflow.py new file mode 100644 index 0000000000000000000000000000000000000000..d17c5dad7b4b8ad869c3b4c30eeb71a6eaeb106c --- /dev/null +++ b/testcase/test_scene1/scene1_mainflow.py @@ -0,0 +1,101 @@ +import datetime +import threading +import time +import traceback + +from airtest.core.api import * +from selenium import webdriver +from selenium.webdriver import DesiredCapabilities +from selenium.webdriver.common.keys import Keys +from airtest_selenium.proxy import * +from selenium.webdriver import Chrome, ChromeOptions +from airtest.core.api import * +from airtest_selenium.proxy import * + +from public.mail1 import send_email1 +from public.tools import * + +opt = ChromeOptions() # 创建 Chrome 参数对象 +opt.headless = False # 把 Chrome 设置成无界面模式,windows/Linux 皆可 +opt.add_argument('--start-maximized') +opt.add_argument('--window-size=1280x1024') +chrome = webdriver.Chrome(chrome_options=opt) + +SIT_URL = 'http://scdev.cmic.com.cn:8088/beta/'#SIT环境地址 +#通行证 +usr1,pwd1 = 'bj_01','Gyxc1234' +usr2,pwd2 = 'bj_02','Gyxc1234' +usr3,pwd3 = 'bj_03','Gyxc1234' +usr4,pwd4 = 'bj_04','Gyxc1234' +usr5,pwd5 = 'bj_05','Gyxc1234' +warehousename = '北京强生非WMS仓'#仓库名称 + + +class LoginSys(): + def loginsys(self,url,usr,pwd): + chrome.get(url) + sleep(2) + chrome.find_element_by_id('input1').clear() + chrome.find_element_by_id('input1').send_keys(usr) + chrome.find_element_by_id('input2').clear() + chrome.find_element_by_id('input2').send_keys(pwd) + chrome.find_element_by_id('input2').send_keys(Keys.ENTER) + while True: + try: + if(chrome.find_element_by_xpath('//span[text()="退出"]').is_displayed()==True): + break + except: + continue + +class PurchaseOrder(): + def data_add(self): + order_link = chrome.find_element_by_xpath('//span[text()="普通采购订单"]') + chrome.execute_script("arguments[0].click();", order_link) + chrome.switch_to.frame(chrome.find_element_by_xpath('(//iframe[@class="metro-main-frame"])[2]')) + sleep(2) + chrome.find_element_by_xpath('//span[text()="新建"]').click() + sleep(4) + chrome.switch_to.frame(chrome.find_element_by_xpath('//iframe[contains(@name,"awsui-dialog-iframe")]')) + sleep(2) + + # 获取订单号 + orderno = chrome.find_element_by_xpath('//div[text() = "订单号 "]/following-sibling::div/span').text + print(orderno) + + #填写仓库信息 + chrome.find_element_by_xpath('//div[text()="仓库名称 "]/following-sibling::div/div/div/div/div/div/div/div/span/span/i').click() + sleep(1) + chrome.find_element_by_xpath('//input[@placeholder="模糊检索:仓库名称,仓库编码"]').send_keys(warehousename) + chrome.find_element_by_xpath('//input[@placeholder="模糊检索:仓库名称,仓库编码"]').send_keys(Keys.ENTER) + sleep(1) + btn_div= chrome.find_element_by_xpath('//span/input[@type="radio" and @value="022bc5d182335c5146b3817a500c2cbc7"]') + chrome.execute_script("arguments[0].click();", btn_div) + sleep(1) + chrome.find_element_by_xpath('(//button[@class="el-button el-button--primary el-button--default"])[2]').click() + sleep(1) + + #填写合同信息 + chrome.find_element_by_xpath('//div[text()="合同信息"]').click() + chrome.find_element_by_xpath( + '//div[text()="合同号 "]/following-sibling::div/div/div/div/div/div/div/div/span/span/i').click() + chrome.find_element_by_xpath( + '//input[@placeholder="模糊检索:合同号,合同协议号,对方编码,项目名称,项目编码,业态编码,参考部门,参考部门编码,参考业务员,参考业务员编码,产品线名称,产品线编码,合同类型,合同属性"]').send_keys( + '38443') + chrome.find_element_by_xpath( + '//input[@placeholder="模糊检索:合同号,合同协议号,对方编码,项目名称,项目编码,业态编码,参考部门,参考部门编码,参考业务员,参考业务员编码,产品线名称,产品线编码,合同类型,合同属性"]').send_keys( + Keys.ENTER) + chrome.find_element_by_xpath( + '//div[@class="multiple-header string_col" and text()="38443"]/ancestor-or-self::td/preceding-sibling::td/div/label/span/span').click() + chrome.find_element_by_xpath('(//button[@class="el-button el-button--primary el-button--default"])[3]').click() + sleep(2) + + + + + + +if __name__ == '__main__': + step1 = LoginSys() + step2 = PurchaseOrder() + step1.loginsys(SIT_URL,usr2,pwd2) + step2.data_add() \ No newline at end of file