Commit 27ea7d8c authored by 章 登恒's avatar 章 登恒
Browse files

commit

parent 3d1fe462
......@@ -41,7 +41,8 @@ productdate = '2023-10-01'#生产日期
expirdate = '2026-09-30'#失效日期
errmsg = '流程一:采购_采退流程异常,请检查!'#流程异常提示信息
class LoginSys():#登录
class LoginSys():###登录
def loginsys(self,url,usr,pwd):
chrome.get(url)
sleep(2)
......@@ -59,38 +60,44 @@ class LoginSys():#登录
# except:
# continue
class PurchaseOrder():#普通采购单界面操作
class PurchaseOrder():###普通采购单界面操作
def data_add(self):#填写表单数据
chrome.implicitly_wait(10)
###打开普通采购单###
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)
# 获取订单号
###获取订单号###
global orderno1
orderno1 = chrome.find_element_by_xpath('//div[text() = "订单号 "]/following-sibling::div/span').text
print('普通采购单号为:',orderno1)
#填写仓库信息
###填写仓库信息###
#点击仓库名称,输入仓库名并查询出结果
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()
sleep(1)
#点击采购合同/协议号并输入信息,查询出结果
chrome.find_element_by_xpath(
'//div[text()="采购合同/协议号 "]/following-sibling::div/div/div/div/div/div/div/div/span/span/i').click()
sleep(1)
......@@ -104,13 +111,14 @@ class PurchaseOrder():#普通采购单界面操作
sleep(1)
# 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()
#勾选查询出的合同号并点击确定按钮
btn_div= chrome.find_element_by_xpath('//span/input[@type="radio" and @value="03992a2172b8f7327a077e60ac1da11b8"]')
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()="业务员名称 "]/following-sibling::div/div/div/div/div/div/div/div/span/span/i').click()
sleep(1)
......@@ -118,18 +126,20 @@ class PurchaseOrder():#普通采购单界面操作
sleep(1)
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="06c32a810e3dabf2a50d1ab040c7951c8"]')
chrome.execute_script("arguments[0].click();", btn_div)
sleep(1)
chrome.find_element_by_xpath('(//span[@class="ensureBtn"]/button[1])[3]').click()
sleep(1)
#其他信息页签
###切换到其他信息页签###
chrome.find_element_by_xpath('//div[text()="其他信息"]').click()
sleep(1)
# 子表信息录入
###子表信息录入###
chrome.find_element_by_xpath('//div[text()="主体信息"]').click()
sleep(1)
#点击添加商品并输入商品编码,查询出结果
chrome.find_element_by_xpath('//span[text()="添加商品"]').click()
sleep(1)
chrome.find_element_by_xpath(
......@@ -138,20 +148,23 @@ class PurchaseOrder():#普通采购单界面操作
chrome.find_element_by_xpath(
'//input[@placeholder="模糊检索:商品编码,商品名称,规格型号,厂家物料编码"]').send_keys(Keys.ENTER)
sleep(2)
#勾选查询出的商品并点击确定按钮
chrome.find_element_by_xpath(
'//th[@class="el-table_15_column_199 multiple-column el-table-column--selection is-leaf headerCellClassName el-table__cell"]/div/label/span/span').click()
sleep(0.5)
chrome.find_element_by_xpath('(//div[@class="el-dialog__body"]/div[2]/span/button[1]/span)[4]').click()
sleep(5)
#填写数量价格
###填写数量价格###
for i in range(1):
wait.until(ec.visibility_of_element_located((By.XPATH,'(//td[@colid="col_164" and @f="F_QUANTITY_ORD" and @i=%s])'%i)))
#定位数量框并输入数量
element = chrome.find_element_by_xpath('(//td[@colid="col_164" and @f="F_QUANTITY_ORD" and @i=%s])'%i)
chrome.execute_script("arguments[0].click();", element)
sleep(0.5)
chrome.find_element_by_class_name('awsui-input-number-right').send_keys('1')
sleep(1)
#点击其它地方让数量框失焦,让数量真正填入数量框(平台设计如此,不用纠结为啥要此步)
chrome.find_element_by_xpath('(//td[@colid="col_171" and @f="F_PURUNIT_TXT" and @i=%s])' % i).click()
sleep(1)
def return_pchno(self):#返回采购单号
......@@ -166,25 +179,30 @@ class PurchaseOrder():#普通采购单界面操作
sleep(1)
def button_click1(self,type=2,el1='el-loading-spinner',el2='//p[text()="办理成功"]'):#保存/提交订单:type=1为保存,否则为提交
if type == 1:
if type == 1:#保存
#点击保存按钮
chrome.find_element_by_xpath('//span[text()="保存"]').click()
sleep(1)
#元素el1不可见时认为保存成功
locator = (By.CLASS_NAME, f'{el1}')
wait.until_not(ec.presence_of_element_located(locator))
else:
else:#提交
#点击提交按钮
chrome.find_element_by_xpath('//span[text()="提交"]').click()
sleep(1)
#元素el2出现时认为提交成功
locator = (By.XPATH, f'{el2}')
wait.until(ec.presence_of_element_located(locator))
self.closetab()
def query_click(self,menu_name,orderno,el,qrcond='订单号'):#查询出订单并点击
#打开菜单
order_link = chrome.find_element_by_xpath('//span[text()="%s"]'%menu_name)
chrome.execute_script("arguments[0].click();", order_link)
sleep(3)
chrome.switch_to.frame(chrome.find_element_by_xpath('(//iframe[@class="metro-main-frame"])[2]'))
sleep(1)
# 输入采购单号并查询
# 输入orderno并查询出订单
chrome.find_element_by_xpath('//label[text()="%s"]/parent::div/div/div/div/input'%qrcond).send_keys(orderno)
sleep(1)
chrome.find_element_by_xpath('//label[text()="%s"]/parent::div/div/div/div/input'%qrcond).send_keys(Keys.ENTER)
......@@ -195,27 +213,31 @@ class PurchaseOrder():#普通采购单界面操作
#点击采购单
# chrome.find_element_by_xpath(
# '//span[text()="%s"]//parent::div/parent::td//preceding-sibling::td[1]/div/span' % orderno1).click()
#点击订单,进入表单视图
element = chrome.find_element_by_xpath('//td[@class="%s"]/div/span'%el)
element.click()
sleep(1)
def commit_order(self,type=2):#保存/提交订单:type=1为保存,否则为提交
#调用query_click查询并打开订单,进入表单视图
self.query_click('普通采购订单',orderno1,'vxe-body--column col_19 col--last col--ellipsis dw-click-cell')
chrome.switch_to.frame(chrome.find_element_by_xpath('//iframe[contains(@name,"awsui-dialog-iframe")]'))
sleep(0.5)
#等待表单视图加载完
locator = (By.XPATH, '//span[text()="提交"]')
wait.until(ec.presence_of_element_located(locator))
sleep(2)
# 审批/驳回订单
#调用button_click1保存/提交订单,type=1为保存,否则为提交
self.button_click1(type)
def switch_loggin(self,usr,pwd):#切换登录
chrome.switch_to.default_content()
sleep(0.5)
#退出系统
chrome.find_element_by_xpath('//span[text()="退出"]').click()
sleep(0.5)
chrome.find_element_by_xpath('//button[text()="确定"]').click()
sleep(1)
#输入用户名密码登录
chrome.find_element_by_id('input1').clear()
chrome.find_element_by_id('input1').send_keys(usr)
chrome.find_element_by_id('input2').clear()
......@@ -224,74 +246,91 @@ class PurchaseOrder():#普通采购单界面操作
locator = (By.XPATH, '//span[text()="退出"]')
wait.until(ec.presence_of_element_located(locator))
def button_click2(self,type,msg='办理成功'):#审批/驳回订单:type=1为审批/其余为驳回订单
if type == 1:
def button_click2(self,type=1,msg1='办理成功'):#审批/驳回订单:type=1为审批/其余为驳回订单
if type == 1:#审核流程
#点击审核通过
chrome.find_element_by_xpath('//span[text()="审核通过"]').click()
locator = (By.XPATH, '//textarea[@placeholder="意见留言"]')
wait.until(ec.presence_of_element_located(locator))
sleep(0.5)
#填写审核通过信息
chrome.find_element_by_xpath('//textarea[@placeholder="意见留言"]').send_keys('审核通过')
sleep(0.5)
#点击发送按钮
chrome.find_element_by_xpath('//span[text()="发送"]').click()
locator = (By.XPATH, '//p[text()="%s"]'%msg)
#判断审核成功
locator = (By.XPATH, '//p[text()="%s"]'%msg1)
wait.until(ec.presence_of_element_located(locator))
print('订单审核成功')
else:
else:#驳回流程
#点击驳回
chrome.find_element_by_xpath('//span[text()="审核驳回"]').click()
locator = (By.XPATH, '//textarea[@placeholder="意见留言"]')
wait.until(ec.presence_of_element_located(locator))
sleep(0.5)
#填写驳回信息
chrome.find_element_by_xpath('//textarea[@placeholder="意见留言"]').send_keys('审核驳回')
sleep(0.5)
#点击发送
chrome.find_element_by_xpath('//span[text()="发送"]').click()
#判断驳回成功
locator = (By.XPATH, '//p[text()="发送成功"]')
wait.until(ec.presence_of_element_located(locator))
print('订单驳回成功')
self.closetab()
def approve_order(self,type=1):#审核/驳回订单:type=1为审核通过,否则为审核驳回
#调用query_click进入表单视图
self.query_click('普通采购订单',orderno1,'vxe-body--column col_19 col--last col--ellipsis dw-click-cell')
chrome.switch_to.frame(chrome.find_element_by_xpath('//iframe[contains(@name,"awsui-dialog-iframe")]'))
sleep(0.5)
locator = (By.XPATH, '//span[text()="审核通过"]')
wait.until(ec.presence_of_element_located(locator))
sleep(2)
#调用button_click2审批/驳回
self.button_click2(type)
class Instore(PurchaseOrder):
def take_over_goods(self,orderno,type=2):
class Instore(PurchaseOrder):#入库三步曲
def take_over_goods(self,orderno,type=2):#仓库收货
#调用query_click进入表单视图
PurchaseOrder.query_click(self,'仓库收货',orderno,'vxe-body--column col_19 col--left col--last col--ellipsis dw-click-cell')
chrome.switch_to.frame(chrome.find_element_by_xpath('//iframe[contains(@name,"awsui-dialog-iframe")]'))
sleep(0.5)
wait.until(ec.presence_of_element_located((By.XPATH, '//span[text()="收货"]')))
sleep(0.5)
#点击收货
chrome.find_element_by_xpath('//span[text()="收货"]').click()
wait.until(ec.presence_of_element_located((By.XPATH, '//span[text()="确定"]')))
sleep(0.5)
#点击确定
chrome.find_element_by_xpath('//span[text()="确定"]').click()
wait.until(ec.presence_of_element_located((By.XPATH, '//span[text()="提交"]')))
sleep(0.5)
#调用button_click3撤回/提交/保存订单
self.button_click3(type)
def button_click3(self,type):
if type == 1:
def button_click3(self,type=2):
if type == 1:#撤回订单
chrome.find_element_by_xpath('//span[text()="单据撤回"]').click()
elif type == 2:
elif type == 2:#提交订单
chrome.find_element_by_xpath('//span[text()="提交"]').click()
wait.until(ec.presence_of_element_located((By.XPATH, '//p[text()="提交成功"]')))
print("收货成功")
print("仓库收货成功")
PurchaseOrder.closetab(self)
else:
else:#保存订单
chrome.find_element_by_xpath('//span[text()="保存"]').click()
def goods_check(self,orderno,type=2):
def goods_check(self,orderno,type=2):#仓库验收
#调用query_click进入表单视图
PurchaseOrder.query_click(self,'仓库验收',orderno,'vxe-body--column col_19 col--left col--ellipsis dw-click-cell')
chrome.switch_to.frame(chrome.find_element_by_xpath('//iframe[contains(@name,"awsui-dialog-iframe")]'))
sleep(0.5)
wait.until(ec.visibility_of_element_located((By.XPATH, '//span[text()="提交"]')))
sleep(1.5)
#浏览器页面右滑
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 = %s*30;" % i)
#填写商品信息
for i in range(1):
#填写生产批号
element = chrome.find_element_by_xpath('(//td[@colid="col_161" and @f="F_PRO_NUM" and @i=%s])' % i)
......@@ -342,22 +381,25 @@ class Instore(PurchaseOrder):
sleep(0.5)
chrome.find_element_by_xpath('(//td[@colid="col_165" and @f="F_STE_NUM" and @i=%s])' % i).click()
sleep(0.5)
#调用button_click1保存/提交订单
PurchaseOrder.button_click1(self,type)
print('仓库验收成功')
def goods_grounding(self,orderno,type=2):
def goods_grounding(self,orderno,type=2):#仓库上架
#调用query_click打开表单视图
PurchaseOrder.query_click(self, '仓库上架', orderno,
'vxe-body--column col_19 col--left col--ellipsis dw-click-cell')
chrome.switch_to.frame(chrome.find_element_by_xpath('//iframe[contains(@name,"awsui-dialog-iframe")]'))
sleep(0.5)
wait.until(ec.presence_of_element_located((By.XPATH, '//span[text()="提交"]')))
sleep(0.5)
# 调用button_click1保存/提交订单
PurchaseOrder.button_click1(self, type,el2='//p[text()="流程结束"]')
print('仓库上架成功')
###采购退货单页面操作###
class PurchaseReject(PurchaseOrder):
def relate_order(self,orderno,type=2):
def relate_order(self,orderno,type=2):#关联原单退货
#打开采退单
order_link = chrome.find_element_by_xpath('//span[text()="采购退货单"]')
chrome.execute_script("arguments[0].click();", order_link)
......@@ -402,65 +444,75 @@ class PurchaseReject(PurchaseOrder):
PurchaseOrder.button_click1(self,type=type)
print("关联原单创建采退单成功,采退单号为:",orderno2)
def return_rejpchno(self):
def return_rejpchno(self):#返回采退单号
return orderno2
def commit_order(self,orderno,type=2):#保存/提交订单:type=1为保存,否则为提交
#查询出订单并点击
PurchaseOrder.query_click(self,'采购退货单',orderno,'vxe-body--column col_19 col--last col--ellipsis dw-click-cell',qrcond='采退单号')
#切框架
chrome.switch_to.frame(chrome.find_element_by_xpath('//iframe[contains(@name,"awsui-dialog-iframe")]'))
sleep(0.5)
locator = (By.XPATH, '//span[text()="提交"]')
wait.until(ec.presence_of_element_located(locator))
sleep(2)
# 保存/提交订单
# 调用button_click1保存/提交订单
PurchaseOrder.button_click1(self,type)
def approve_order(self,orderno,type=1):#审核/驳回订单:type=1为审核通过,否则为审核驳回
#调用query_click进入表单视图
PurchaseOrder.query_click(self,'采购退货单',orderno,'vxe-body--column col_19 col--last col--ellipsis dw-click-cell',qrcond='采退单号')
chrome.switch_to.frame(chrome.find_element_by_xpath('//iframe[contains(@name,"awsui-dialog-iframe")]'))
sleep(0.5)
locator = (By.XPATH, '//span[text()="审核通过"]')
wait.until(ec.presence_of_element_located(locator))
sleep(2)
PurchaseOrder.button_click2(self,type,msg='发送成功')
#调用button_click2审核/驳回订单
PurchaseOrder.button_click2(self,type,msg1='发送成功')
class Outstore(PurchaseOrder):
def deliver_goods(self,orderno):
class Outstore(PurchaseOrder):#出库三步曲
def deliver_goods(self,orderno):#仓库发货
#调用query_click进入表单视图
PurchaseOrder.query_click(self,'仓库发货',orderno,'vxe-body--column col_19 col--last col--ellipsis dw-click-cell')
chrome.switch_to.frame(chrome.find_element_by_xpath('//iframe[contains(@name,"awsui-dialog-iframe")]'))
sleep(0.5)
wait.until(ec.visibility_of_element_located((By.XPATH, '//span[text()="确认发货"]')))
sleep(0.5)
#确认发货
chrome.find_element_by_xpath('//span[text()="确认发货"]').click()
wait.until(ec.visibility_of_element_located((By.XPATH, '//span[text()="确定"]')))
sleep(0.5)
#确定
chrome.find_element_by_xpath('//span[text()="确定"]').click()
wait.until(ec.visibility_of_element_located((By.XPATH, '//span[text()="确认发货"]')))
sleep(0.5)
# 确认发货
chrome.find_element_by_xpath('//span[text()="确认发货"]').click()
sleep(0.5)
#判断发货成功
wait.until(ec.presence_of_element_located((By.XPATH, '//p[text()="办理成功"]')))
PurchaseOrder.closetab(self)
print('仓库发货成功')
def picking_goods(self,orderno,type=2):
def picking_goods(self,orderno,type=2):#仓库拣货
# 调用query_click进入表单视图
PurchaseOrder.query_click(self,'仓库拣货',orderno,'vxe-body--column col_19 col--left col--ellipsis dw-click-cell')
chrome.switch_to.frame(chrome.find_element_by_xpath('//iframe[contains(@name,"awsui-dialog-iframe")]'))
#调用button_click1保存/提交
PurchaseOrder.button_click1(self,type)
print('仓库拣货成功')
def outbound_review(self,orderno,type=2):
def outbound_review(self,orderno,type=2):#出库复核
# 调用query_click进入表单视图
PurchaseOrder.query_click(self,'出库复核',orderno,'vxe-body--column col_19 col--left col--ellipsis dw-click-cell')
chrome.switch_to.frame(chrome.find_element_by_xpath('//iframe[contains(@name,"awsui-dialog-iframe")]'))
#填写商品信息
for i in range(1):
wait.until(ec.visibility_of_element_located((By.XPATH,'(//td[@colid="col_117" and @f="F_RECHECK_NUM" and @i=%s])'%i)))
chrome.find_element_by_xpath('(//td[@colid="col_117" and @f="F_RECHECK_NUM" and @i=%s])'%i).click()
sleep(0.5)
chrome.find_element_by_class_name('awsui-input-number-right').send_keys('1')
sleep(1)
# 调用button_click1保存/提交
PurchaseOrder.button_click1(self,type,el2='//p[text()="流程结束"]')
print('出库复核成功')
......@@ -468,7 +520,7 @@ class Outstore(PurchaseOrder):
if __name__ == '__main__':
try:
step1 = LoginSys1()
step1 = LoginSys()
step2 = PurchaseOrder()
step3 = Instore()
step4 = PurchaseReject()
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment