Commit a3601612 authored by 17322369953's avatar 17322369953
Browse files

air更新

parent 6c225100
# Default ignored files
/shelf/
/workspace.xml
# Editor-based HTTP Client requests
/httpRequests/
# Datasource local storage ignored files
/dataSources/
/dataSources.local.xml
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<module type="PYTHON_MODULE" version="4"> <module type="PYTHON_MODULE" version="4">
<component name="NewModuleRootManager"> <component name="NewModuleRootManager">
<content url="file://$MODULE_DIR$" /> <content url="file://$MODULE_DIR$">
<excludeFolder url="file://$MODULE_DIR$/venv" />
</content>
<orderEntry type="jdk" jdkName="Python 3.7" jdkType="Python SDK" /> <orderEntry type="jdk" jdkName="Python 3.7" jdkType="Python SDK" />
<orderEntry type="sourceFolder" forTests="false" /> <orderEntry type="sourceFolder" forTests="false" />
</component> </component>
<component name="PyDocumentationSettings">
<option name="format" value="PLAIN" />
<option name="myDocStringFormat" value="Plain" />
</component>
<component name="TemplatesService">
<option name="TEMPLATE_CONFIGURATION" value="Jinja2" />
<option name="TEMPLATE_FOLDERS">
<list>
<option value="$MODULE_DIR$/templates" />
</list>
</option>
</component>
<component name="TestRunnerService">
<option name="PROJECT_TEST_RUNNER" value="py.test" />
</component>
</module> </module>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="Encoding">
<file url="file://$PROJECT_DIR$/common/data" charset="GBK" />
</component>
</project>
\ No newline at end of file
...@@ -8,5 +8,12 @@ ...@@ -8,5 +8,12 @@
</list> </list>
</option> </option>
</inspection_tool> </inspection_tool>
<inspection_tool class="PyUnresolvedReferencesInspection" enabled="true" level="WARNING" enabled_by_default="true">
<option name="ignoredIdentifiers">
<list>
<option value="int.screen_shot" />
</list>
</option>
</inspection_tool>
</profile> </profile>
</component> </component>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<project version="4"> <project version="4">
<component name="Black">
<option name="sdkName" value="Python 3.7" />
</component>
<component name="ProjectRootManager" version="2" project-jdk-name="Python 3.7" project-jdk-type="Python SDK" /> <component name="ProjectRootManager" version="2" project-jdk-name="Python 3.7" project-jdk-type="Python SDK" />
</project> </project>
\ No newline at end of file
...@@ -2,6 +2,5 @@ ...@@ -2,6 +2,5 @@
<project version="4"> <project version="4">
<component name="VcsDirectoryMappings"> <component name="VcsDirectoryMappings">
<mapping directory="" vcs="Git" /> <mapping directory="" vcs="Git" />
<mapping directory="$PROJECT_DIR$/autotest-airtest-web" vcs="Git" />
</component> </component>
</project> </project>
\ No newline at end of file
#!/user/bin/env python3
# -*- coding: utf-8 -*-
# ddate:2023/12/8 8:59
__author__: "qinguanglei"
"""
case_tag:case
"""
from selenium.webdriver.remote.webdriver import By
from actions.actions_login.page_login import PageLogin
class PageBuy(PageLogin):
"""基础元素"""
# 采购管理元素
_buy_management_locator = (By.XPATH, '//div[@class="menuNavItem" and @sysname="采购管理"]')
# 采购业务元素
_buy_locator = (By.XPATH, '//div[@class="sec-menu" and @navname="采购业务"]')
# 采退业务元素
_return_locator = (By.XPATH, '//div[@class="sec-menu" and @navname="采退业务"]')
# 普通采购订单元素
_buy_op_locator = (By.XPATH, '//div[@class="third-menu" and @navname="普通采购订单"]')
# 采购iframe
_iframe_buy_locator = (
By.XPATH, '//iframe[@class="metro-main-frame" and contains(@src,"purchases")]')
# 新建按钮
_new_locator = (By.XPATH, '//span[text() = "新建"]')
# 对话框iframe,填写订单信息需要
_sub_iframe_dialog_locator = (By.XPATH, '//iframe[contains(@name,"dialog-iframe")]')
# 请求查询公司信息按钮元素
_company_request_locator = (By.XPATH, '//input[starts-with(@id,"el-id-") and contains(@id,"-106")]/../span/span/i')
# 公司信息输入元素
_company_input_locator = (By.XPATH, '//input[@placeholder = "模糊检索:公司名称,公司编码"]')
# 公司信息搜索元素
_company_search_locator = (By.XPATH, '//input[@placeholder = "模糊检索:公司名称,公司编码"]/../span/span/i')
# 公司表dialog body
_company_dialog_locator = (
By.XPATH, '//div[starts-with(@id,"el-id-") and contains(@id,"-21") and @class="el-dialog__body"]')
_company_table_locator = (By.CLASS_NAME, "el-table__body")
# 公司确定按钮
_company_table_ensure_locator = (By.XPATH, '//span[@class="ensureBtn"]/button/span[text() = "确定"]')
# 主体信息
_main_info_locator = (By.ID, 'tab-7667cf55-c391-4f2c-a5ba-c0f6d27b6d3a')
'''仓库信息'''
# 仓库输入内容
_warehouse_content_locator = (By.XPATH, '//input[starts-with(@id,"el-id-") and contains(@id,"-122")]')
# 请求查询仓库元素
_ware_request_locator = (By.XPATH, '//input[starts-with(@id,"el-id-") and contains(@id,"-122")]/../span/span/i')
# _ware_request_locator = (By.XPATH, '//div[text() = "仓库名称"]/../div[@class="el-form-item__content"]/descendant::i[@class="awsui-iconfont" and @style="cursor: pointer;"]')
# _ware_request_locator = (By.XPATH,'//div[@id =contains(text(),"仓库名称")]')
# 仓库输入元素
_ware_input_locator = (By.XPATH, '//input[@placeholder = "模糊检索:仓库名称,仓库编码"]')
# 仓库搜索元素
_ware_search_locator = (By.XPATH, '//input[@placeholder = "模糊检索:仓库名称,仓库编码"]/../span/span/i')
# _ware_dialog_locator = (
# By.XPATH, '//div[starts-with(@id,"el-id-") and contains(@id,"-26") and @class="el-dialog__body"]')
# _ware_dialog_locator = (By.XPATH, '//div[@role="dialog" and @aria-label="选择仓库"]')
_ware_dialog_locator = (
By.XPATH, '//div[starts-with(@id,"el-id-") and contains(@id,"-32") and @class="el-dialog__body"]')
_ware_table_locator = 'By.XPATH, "//table[@class = "el-table__body""'
# 仓库表确认元素---这中确定看着可以统一
_ware_table_ensure_locator = (By.XPATH, '//span[@class="ensureBtn"]/button/span[text() = "确定"]')
'''供应商信息'''
# 供应商内容
_supplier_content_locator = (By.XPATH, '//input[starts-with(@id,"el-id-") and contains(@id,"-119")]')
# 查询供应商请求元素
_supplier_request_locator = (By.XPATH, '//input[starts-with(@id,"el-id-") and contains(@id,"-119")]/../span/span/i')
# 供应商输入信息
_supplier_input_locator = (By.XPATH, '//input[@placeholder = "模糊检索:供应商名称,供应商编码"]')
# 供应商搜索元素
_supplier_search_locator = (By.XPATH, '//input[@placeholder = "模糊检索:供应商名称,供应商编码"]/../span/span/i')
# 供应商表元素-----这个只能找绝对路径了,开发太狠了
_supplier_table_locator = (
By.XPATH, '/html/body/div[10]/div/div/div/div[1]/div[2]/div[1]/div/div/div/div[1]/div[3]/div/div[1]/div/table')
# 供应商dialog
_supplier_dialog_locator = (
By.XPATH, '//div[starts-with(@id,"el-id-") and contains(@id,"-20") and @class="el-dialog__body"]')
# 供应商表确定元素---这中确定看着可以统一
_supplier_table_ensure_locator = (By.XPATH, './span[@class="ensureBtn"]/button/span[text() = "确定"]')
_dialog_ensure_locator = './*/span[@class="ensureBtn"]/button/span[text() = "确定"]'
'''协议信息'''
# 协议输入内容元素
_protocol_content_locator = (By.XPATH, '//input[starts-with(@id,"el-id-") and contains(@id,"-124")]')
# 协议请求元素
_protocol_request_locator = (By.XPATH, '//input[starts-with(@id,"el-id-") and contains(@id,"-109")]/../span/span/i')
# 协议输入元素
_protocol_input_locator = (By.XPATH,
'//input[@placeholder = "模糊检索:合同/协议号,合同号,项目编码,项目名称,业态编码,对方编码,产品线编码"]')
# 协议搜索元素
_protocol_search_locator = (By.XPATH,
'//input[@placeholder = "模糊检索:合同/协议号,合同号,项目编码,项目名称,业态编码,对方编码,产品线编码"]/../span/span/i')
# 协议dialog元素
_protocol_dialog_locator = (
By.XPATH, '//div[starts-with(@id,"el-id-") and contains(@id,"-36") and @class="el-dialog__body"]')
'''业务员信息'''
# 业务员输入内容元素
_businessman_content_locator = (By.XPATH, '//input[starts-with(@id,"el-id-") and contains(@id,"-127")]')
# 业务员请求元素
_businessman_request_locator = (
By.XPATH, '//input[starts-with(@id,"el-id-") and contains(@id,"-110")]/../span/span/i')
# 业务员输入元素
_businessman_input_locator = (By.XPATH, '//input[@placeholder="模糊检索:业务员编码,业务员名称,部门编码,部门名称"]')
# 业务员搜索元素
_businessman_search_locator = (
By.XPATH, '//input[@placeholder="模糊检索:业务员编码,业务员名称,部门编码,部门名称"]/../span/span/i')
# 业务员dialog元素
_businessman_dialog_locator = (
By.XPATH, '//div[starts-with(@id,"el-id-") and contains(@id,"-41") and @class="el-dialog__body"]')
'''商品信息'''
# 商品最高复选框
_merchandise_all_select_locator = (By.XPATH,
'/html/body/div[38]/div/div/div/div[1]/div[2]/div[1]/div/div[2]/div/div[1]/div[2]/table/thead/tr/th[1]/div/label')
# 商品录入按钮
_merchandise_locator = (By.XPATH, '//span[text()="添加商品"]')
# 商品dialog
_merchandise_dialog_locator = (
By.XPATH, '//div[starts-with(@id,"el-id-") and contains(@id,"-136") and @class="el-dialog__body"]')
# 商品输入元素
_merchandise_input_locator = (By.XPATH, '//input[@placeholder="模糊检索:商品编码,商品名称,规格型号,厂家物料编码"]')
# 商品搜索元素
_merchandise_search_locator = (
By.XPATH, '//input[@placeholder="模糊检索:商品编码,商品名称,规格型号,厂家物料编码"]/../span/span/i')
# dialog中的输入元素
_dialog_input_locator = './*/input[@class="el-input__inner" and @placeholder="模糊检索:商品编码,商品名称,规格型号,厂家物料编码"]'
# dialog中的搜索元素
_dialog_search_locator = './*/span[@class="el-input__prefix-inner"]/i'
"""表格中输入元素"""
_input_in_table_locator = 'input'
# 保存按钮
# _save_locator = (By.XPATH, '//*[@id="process-toolbar"]/button[4]/span/text()')
_save_locator = (By.XPATH, '//*[@id="process-toolbar"]/*/span[text()="保存"]')
# _submit_locator
_submit_locator = (By.XPATH, '//*[@id="process-toolbar"]/*/span[text()="提交"]')
# 订单号
_order_no_locator = (By.XPATH, '//*[@id="0b83dfe6-67bc-46bf-b271-5e768a59e415"]/div/div[2]/span')
# 商品明细表
_detail_table = (
By.XPATH,
'//*[@id="a55ef0dd-0262-4caa-b701-684a33007ac5"]/div/div[2]/div/div/div[2]/div[2]/div[1]/div[2]/table')
# _detail_table = (
# By.XPATH, '//*[@id="a55ef0dd-0262-4caa-b701-684a33007ac5"]/*/table[@class="vxe-table--body"]')
'''获取采购管理元素'''
def get_buy_management(self):
return self.get_element_wait_presence(self._buy_management_locator)
'''获取采购元素'''
def get_buy(self):
return self.get_element_wait_presence(self._buy_locator)
'''获取采退元素'''
def get_return(self):
return self.get_element_wait_presence(self._return_locator)
'''获取采购订单op元素'''
def get_buy_op(self):
return self.get_element_wait_presence(self._buy_op_locator)
'''获取采购iframe元素'''
def get_iframe_buy(self):
return self.get_element_wait_presence(self._iframe_buy_locator)
'''获取新建按钮元素'''
def get_new(self):
return self.get_element_wait_presence(self._new_locator)
'''获取对话框iframe元素'''
def get_sub_iframe_dialog(self):
return self.get_element_wait_presence(self._sub_iframe_dialog_locator)
'''获取查询公司请求按钮'''
def get_company_request(self):
return self.get_element_wait_presence(self._company_request_locator)
'''获取公司输入信息元素'''
def get_company_input(self):
return self.get_element_wait_presence(self._company_input_locator)
'''获取公司搜索按钮元素'''
def get_company_search(self):
return self.get_element_wait_presence(self._company_search_locator)
'''获取公司表元素'''
def get_company_table(self):
# return self.get_element_wait_presence(self._company_table_locator)
# 首先获取公司dialog
company_dialog = self.get_company_dialog()
'''再从公司dialog中获取公司表'''
return self.get_table_from_dialog(company_dialog)
'''获取公司表确定按钮'''
def get_company_table_ensure(self):
return self.get_element_wait_presence(self._company_table_ensure_locator)
'''获取仓库信息'''
def get_ware_info(self):
return self.get_element_wait_presence(self._ware_info_locator)
'''获取主体信息'''
def get_main_info(self):
return self.get_element_wait_presence(self._main_info_locator)
'''仓库信息hold'''
'''获取仓库内容元素'''
def get_warehouse_content(self):
return self.get_element_wait_presence(self._warehouse_content_locator)
'''获取请求查询仓库元素'''
def get_ware_request(self):
return self.get_element_wait_presence(self._ware_request_locator)
'''获取仓库输入元素'''
def get_ware_input(self):
return self.get_element_wait_presence(self._ware_input_locator)
'''获取仓库搜索元素'''
def get_ware_search(self):
return self.get_element_wait_presence(self._ware_search_locator)
'''选择某行'''
def select_one_row(self, row):
tds = row.find_elements(By.TAG_NAME, "td")
span = tds[1].find_element(By.XPATH, './div/label/span[1]')
span.click()
'''获取仓库dialog'''
def get_ware_dialog(self):
return self.get_element_wait_presence(self._ware_dialog_locator)
'''获取仓库表元素'''
def get_ware_table(self):
ware_dialog = self.get_ware_dialog()
return self.get_table_from_dialog(ware_dialog)
'''获取仓库表确定按钮'''
def get_ware_table_ensure(self):
ware_dialog = self.get_ware_dialog()
return ware_dialog.find_element(By.XPATH, '//span[@class="ensureBtn"]/button/span[text() = "确定"]')
# return self.get_child(ware_dialog, self._ware_table_ensure_locator)
'''供应商信息hold'''
'''获取供应商内容元素'''
def get_supplier_content(self):
return self.get_element_wait_presence(self._supplier_content_locator)
'''获取供应商dialog元素'''
def get_supplier_dialog(self):
return self.get_element_wait_presence(self._supplier_dialog_locator)
'''从dialog中获取输入元素'''
def get_input_from_dialog(self, dialog_element):
result = dialog_element.find_element(By.XPATH, self._dialog_input_locator)
self.wait_seconds(self.time_seconds)
return result
'''从dialog中获取搜索元素'''
def get_search_from_dialog(self, dialog_element):
search = dialog_element.find_element(By.XPATH, self._dialog_search_locator)
self.wait_seconds(self.time_seconds)
return search
'''从dialog中获取表信息'''
def get_table_from_dialog(self, dialog_element):
tables = dialog_element.find_elements(By.TAG_NAME, "table")
self.wait_seconds(self.time_seconds)
return tables[1]
'''从dialog中获取确定按钮'''
def get_ensure_from_dialog(self, dialog_element):
ensure = dialog_element.find_element(By.XPATH, self._dialog_ensure_locator)
return ensure
"""从表格中的一个栏位中获取输入元素"""
def get_input_from_table_field(self, field):
element = field.find_element(By.XPATH, self._input_in_table_locator)
return element
'''获取供应商请求元素'''
def get_supplier_request(self):
return self.get_element_wait_presence(self._supplier_request_locator)
'''获取供应商输入元素'''
def get_supplier_input(self):
return self.get_element_wait_presence(self._supplier_input_locator)
'''获取供应商搜索元素'''
def get_supplier_search(self):
return self.get_element_wait_presence(self._supplier_search_locator)
'''获取供应商表元素'''
def get_supplier_table(self):
return self.get_element_wait_presence(self._supplier_table_locator)
'''获取供应商表确定元素'''
def get_supplier_table_ensure(self):
return self.get_element_wait_presence(self._supplier_table_ensure_locator)
'''获取公司dialog'''
def get_company_dialog(self):
return self.get_element_wait_presence(self._company_dialog_locator)
'''协议信息hold'''
'''获取协议输入内容'''
def get_protocol_context(self):
return self.get_element_wait_presence(self._protocol_content_locator)
'''获取协议请求元素'''
def get_protocol_request(self):
return self.get_element_wait_presence(self._protocol_request_locator)
'''获取协议输入元素'''
def get_protocol_input(self):
return self.get_element_wait_presence(self._protocol_input_locator)
'''获取协议搜索元素'''
def get_protocol_search(self):
return self.get_element_wait_presence(self._protocol_search_locator)
'''获取协议dialog'''
def get_protocol_dialog(self):
return self.get_element_wait_presence(self._protocol_dialog_locator)
'''业务员信息hold'''
'''获取业务员输入信息'''
def get_businessman_content(self):
return self.get_element_wait_presence(self._businessman_content_locator)
'''获取业务员请求元素'''
def get_businessman_request(self):
return self.get_element_wait_presence(self._businessman_request_locator)
'''获取业务员输入元素'''
def get_businessman_input(self):
return self.get_element_wait_presence(self._businessman_input_locator)
'''获取业务员搜索元素'''
def get_businessman_search(self):
return self.get_element_wait_presence(self._businessman_search_locator)
'''获取业务员dialog'''
def get_businessman_dialog(self):
return self.get_element_wait_presence(self._businessman_dialog_locator)
'''商品信息hold'''
'''获取商品全选复选框'''
def get_merchandise_all_select(self):
return self.get_element_wait_presence(self._merchandise_all_select_locator)
'''商品录入按钮'''
def get_merchandise(self):
return self.get_element_wait_presence(self._merchandise_locator)
'''商品dialog按钮'''
def get_merchandise_dialog(self):
return self.get_element_wait_presence(self._merchandise_dialog_locator)
'''商品输入元素'''
def get_merchandise_input(self):
return self.get_element_wait_presence(self._merchandise_input_locator)
'''商品搜索元素'''
def get_merchandise_search(self):
return self.get_element_wait_presence(self._merchandise_search_locator)
'''保存按钮元素'''
def get_save(self):
return self.get_element_wait_presence(self._save_locator)
'''订单号'''
def get_order_no(self):
return self.get_element_wait_presence(self._order_no_locator)
'''商品明细表'''
def get_detail_table(self):
return self.get_element_wait_presence(self._detail_table)
'''订单提交'''
def get_submit_element(self):
return self.get_element_wait_presence(self._submit_locator)
This diff is collapsed.
#!/user/bin/env python3
# -*- coding: utf-8 -*-
# ddate:2023/11/24 15:21
__author__: "qinguanglei"
"""
case_tag:case
"""
# author:qinguanglei # author:qinguanglei
# ddate:2023/11/16 11:13 # ddate:2023/11/16 11:13
from airtest_selenium.proxy import *
from selenium.webdriver.common.by import By from selenium.webdriver.common.by import By
from page_class.base_page import BasePage from page_class.base_page import BasePage
......
# author:qinguanglei # author:qinguanglei
# ddate:2023/11/16 16:46 # ddate:2023/11/16 16:46
import datetime
import random
import time
import traceback import traceback
from actions.actions_login.page_login import PageLogin
from common import constant from common import constant
from common.logger import log from common.logger import logger
from common.read_yaml import get_filed_from_yaml from common.read_yaml import get_filed_from_yaml
from common.verifycode import VerifyCode from common.verifycode import VerifyCode
from test_login.page_login import PageLogin from common.common_func import commonFuc
from airtest.core.api import *
module = 'test_login' module = 'login'
class StepsLogin(object): class StepsLogin(object):
...@@ -20,11 +20,12 @@ class StepsLogin(object): ...@@ -20,11 +20,12 @@ class StepsLogin(object):
def open_browser(self): def open_browser(self):
try: try:
log.info('当前url: %s', get_filed_from_yaml(module, "data", "url")) logger.info('当前url: %s', get_filed_from_yaml(module, "data", "url"))
self.page_login.open_page(get_filed_from_yaml(module, "data", "url")) self.page_login.open_page(get_filed_from_yaml(module, "data", "url"))
commonFuc.step_ok_info(commonFuc(), "浏览器打开成功。")
except Exception as e: except Exception as e:
log.error(f'打开浏览器问题:{e.__doc__}{traceback.format_exc()}') commonFuc.step_fail_info(commonFuc(), self.driver, "浏览器打开失败。")
assert False logger.error(f'打开浏览器问题:{e.__doc__}{traceback.format_exc()}')
def enter_account_password(self, flag): def enter_account_password(self, flag):
try: try:
...@@ -49,9 +50,10 @@ class StepsLogin(object): ...@@ -49,9 +50,10 @@ class StepsLogin(object):
self.page_login.input_text(account_element, account) self.page_login.input_text(account_element, account)
if flag == 0 or flag == 2 or flag == 3 or flag == 4: if flag == 0 or flag == 2 or flag == 3 or flag == 4:
self.page_login.input_text(password_element, password) self.page_login.input_text(password_element, password)
commonFuc.step_ok_info(commonFuc(), "成功输入账号密码。")
except Exception as e: except Exception as e:
log.error(f'账号密码输入过程出现问题:{e.__doc__}{traceback.format_exc()}') commonFuc.step_fail_info(commonFuc(), self.driver, "输入账号密码失败。")
assert False logger.error(f'账号密码输入过程出现问题:{e.__doc__}{traceback.format_exc()}')
def enter_verify_code(self, flag): def enter_verify_code(self, flag):
try: try:
...@@ -68,10 +70,11 @@ class StepsLogin(object): ...@@ -68,10 +70,11 @@ class StepsLogin(object):
verify_code_text = '4571' verify_code_text = '4571'
if flag == 1 or flag == 0: if flag == 1 or flag == 0:
self.page_login.input_text(verify_input_element, verify_code_text) self.page_login.input_text(verify_input_element, verify_code_text)
log.info(f'输入的验证码为:{verify_code_text}') logger.info(f'输入的验证码为:{verify_code_text}')
commonFuc.step_ok_info(commonFuc(), "成功输入验证码。")
except Exception as e: except Exception as e:
log.error(f'获取验证码问题:{e.__doc__}{traceback.format_exc()}') logger.error(f'获取验证码问题:{e.__doc__}{traceback.format_exc()}')
assert False commonFuc.step_fail_info(commonFuc(), self.driver, "输入验证码失败。")
def click_login_button(self): def click_login_button(self):
try: try:
...@@ -79,24 +82,25 @@ class StepsLogin(object): ...@@ -79,24 +82,25 @@ class StepsLogin(object):
login_button_element = self.page_login.get_login_button() login_button_element = self.page_login.get_login_button()
# 点击登录 # 点击登录
self.page_login.single_click(login_button_element) self.page_login.single_click(login_button_element)
commonFuc.step_ok_info(commonFuc(), "点击登录正常。")
except Exception as e: except Exception as e:
log.error(f'点击登录动作出现问题:{e.__doc__}{traceback.format_exc()}') logger.error(f'点击登录动作出现问题:{e.__doc__}{traceback.format_exc()}')
assert False commonFuc.step_fail_info(commonFuc(), self.driver, "点击登录失败。")
def judge_result(self): def judge_result(self):
try: try:
# 判断登录是否成功,登录成功会切换到另外一个页面,通过页面title来判断是否切换成功 # 判断登录是否成功,登录成功会切换到另外一个页面,通过页面title来判断是否切换成功
if self.page_login.get_window_title() == constant.LOGIN_SUCCESS: if self.page_login.get_window_title() == constant.LOGIN_SUCCESS:
assert True commonFuc.step_ok_info(commonFuc(), "成功登录。")
else: else:
log.error('案例执行失败') logger.error('案例执行失败')
log.error(f'self.page_login.get_window_title()={self.page_login.get_window_title()}') logger.error(f'self.page_login.get_window_title()={self.page_login.get_window_title()}')
log.error(f'constant.LOGIN_SUCCESS={constant.LOGIN_SUCCESS}') logger.error(f'constant.LOGIN_SUCCESS={constant.LOGIN_SUCCESS}')
log.error('self.page_login.get_window_title()与constant.LOGIN_SUCCESS不一致') logger.error('self.page_login.get_window_title()与constant.LOGIN_SUCCESS不一致')
assert False commonFuc.step_fail_info(commonFuc(), self.driver, "登录失败。")
except Exception as e: except Exception as e:
log.error(f'判断是否登录成功问题:{e.__doc__}{traceback.format_exc()}') logger.error(f'判断是否登录成功问题:{e.__doc__}{traceback.format_exc()}')
assert False commonFuc.step_fail_info(commonFuc(), self.driver, "登录失败。")
def judge_result_error(self, flag): def judge_result_error(self, flag):
try: try:
...@@ -124,14 +128,14 @@ class StepsLogin(object): ...@@ -124,14 +128,14 @@ class StepsLogin(object):
result_value = constant.NO_VERIFY_CODE result_value = constant.NO_VERIFY_CODE
if result_value in self.page_login.get_text(login_result_element): if result_value in self.page_login.get_text(login_result_element):
assert True commonFuc.step_ok_info(commonFuc(), "登录结果错误与预期错误一致。")
else: else:
log.error('登录错误结果校验,案例执行失败') logger.error('登录错误结果校验,案例执行失败')
log.error( logger.error(
f'self.page_login.get_text(login_result_element)={self.page_login.get_text(login_result_element)}') f'self.page_login.get_text(login_result_element)={self.page_login.get_text(login_result_element)}')
log.error(f'result_value={result_value}') logger.error(f'result_value={result_value}')
log.error('self.page_login.get_text(login_result_element)与result_value不一致') logger.error('self.page_login.get_text(login_result_element)与result_value不一致')
assert False commonFuc.step_fail_info(commonFuc(), self.driver, "登录结果错误与预期错误不一致。")
except Exception as e: except Exception as e:
log.error(f'登录错误结果校验问题:{e.__doc__}{traceback.format_exc()}') logger.error(f'登录错误结果校验问题:{e.__doc__}{traceback.format_exc()}')
assert False commonFuc.step_fail_info(commonFuc(), self.driver, "登录结果错误与预期错误不一致。")
#!/user/bin/env python3
# -*- coding: utf-8 -*-
# ddate:2023/12/8 9:06
__author__ = "qinguanglei"
import time
# 购买一个非序列号商品
"""
case_tag:case,buy,case_buy_one_nonseq_commodity
"""
from actions.actions_buy.steps_buy import StepsBuy
from airtest_selenium.proxy import WebChrome
"""家庭作业"""
# 获取驱动器
driver = WebChrome()
driver.implicitly_wait(20)
# 最大化页面
driver.maximize_window()
"""开始执行案例"""
# 载入步骤集合
steps_buy = StepsBuy(driver)
# 打开浏览器
steps_buy.open_browser()
# 登录
steps_buy.login()
# 进入普通采购单页面
steps_buy.enter_buy_op_page()
# 进入新建单据界面
steps_buy.enter_new_op_frame()
# 输入供应商
steps_buy.input_supplier()
# 输入仓库
steps_buy.input_warehouse()
# 输入合同协议
steps_buy.input_protocol()
# 输入业务员员
steps_buy.input_businessman()
# 添加商品
steps_buy.add_merchandise()
# 商品明细处理
steps_buy.detail_proc()
# 订单保存处理
steps_buy.save_proc()
# 订单提交
steps_buy.submit_proc()
time.sleep(15)
# author:qinguanglei # author:qinguanglei
# ddate:2023/11/17 15:54 # ddate:2023/11/17 15:54
__author__ = "qinguanglei"
""" """
case_tag:case,case_login,case_login_no_input_userid case_tag:case,login,case_login_no_input_userid
""" """
from selenium import webdriver from actions.actions_login.steps_login import StepsLogin
from test_login.steps_login import StepsLogin from airtest_selenium.proxy import WebChrome
"""家庭作业"""
option = webdriver.ChromeOptions()
# option.add_experimental_option("detach", True) # 设置不要自动关闭浏览器
# 获取驱动器 # 获取驱动器
driver = webdriver.Chrome(options=option) driver = WebChrome()
driver.implicitly_wait(20)
# 最大化页面 # 最大化页面
driver.maximize_window() driver.maximize_window()
"""开始执行案例"""
# 载入步骤集合 # 载入步骤集合
steps_login = StepsLogin(driver) steps_login = StepsLogin(driver)
# 打开浏览器 # 打开浏览器
...@@ -29,6 +29,3 @@ steps_login.enter_verify_code(0) ...@@ -29,6 +29,3 @@ steps_login.enter_verify_code(0)
steps_login.click_login_button() steps_login.click_login_button()
# 判断结果 # 判断结果
steps_login.judge_result_error(2) steps_login.judge_result_error(2)
# author:qinguanglei # author:qinguanglei
# ddate:2023/11/20 9:56 # ddate:2023/11/20 9:56
__author__ = "qinguanglei"
""" """
case_tag:case,case_login,case_login_no_input_verifycode case_tag:case,login,case_login_no_input_verifycode
""" """
from selenium import webdriver from airtest_selenium.proxy import *
from test_login.steps_login import StepsLogin from actions.actions_login.steps_login import StepsLogin
"""家庭作业""" """家庭作业"""
option = webdriver.ChromeOptions()
# option.add_experimental_option("detach", True) # 设置不要自动关闭浏览器
# 获取驱动器 # 获取驱动器
driver = webdriver.Chrome(options=option) driver = WebChrome()
# 最大化页面 # 最大化页面
driver.maximize_window() driver.maximize_window()
# 加载
driver.implicitly_wait(20)
"""开始执行案例""" """开始执行案例"""
# 载入步骤集合 # 载入步骤集合
......
# author:qinguanglei # author:qinguanglei
# ddate:2023/11/20 9:43 # ddate:2023/11/20 9:43
__author__ = "qinguanglei"
""" """
case_tag:case,case_login,case_login_password_error case_tag:case,login,case_login_password_error
""" """
from selenium import webdriver from airtest_selenium.proxy import *
from test_login.steps_login import StepsLogin from actions.actions_login.steps_login import StepsLogin
"""家庭作业""" """家庭作业"""
option = webdriver.ChromeOptions()
# option.add_experimental_option("detach", True) # 设置不要自动关闭浏览器
# 获取驱动器 # 获取驱动器
driver = webdriver.Chrome(options=option) driver = WebChrome()
# 最大化页面 # 最大化页面
driver.maximize_window() driver.maximize_window()
# 加载
driver.implicitly_wait(20)
"""开始执行案例""" """开始执行案例"""
# 载入步骤集合 # 载入步骤集合
...@@ -28,7 +29,3 @@ steps_login.enter_verify_code(0) ...@@ -28,7 +29,3 @@ steps_login.enter_verify_code(0)
steps_login.click_login_button() steps_login.click_login_button()
# 判断结果 # 判断结果
steps_login.judge_result_error(1) steps_login.judge_result_error(1)
# author:qinguanglei # author:qinguanglei
# ddate:2023/11/16 11:18 # ddate:2023/11/16 11:18
__author__ = "qinguanglei"
""" """
case_tag:case,case_login,case_login_success case_tag:case,login,case_login_success
""" """
from selenium import webdriver from airtest_selenium.proxy import *
from test_login.steps_login import StepsLogin from actions.actions_login.steps_login import StepsLogin
"""家庭作业""" """家庭作业"""
option = webdriver.ChromeOptions()
# option.add_experimental_option("detach", True) # 设置不要自动关闭浏览器
# 获取驱动器 # 获取驱动器
driver = webdriver.Chrome(options=option) driver = WebChrome()
# 最大化页面 # 最大化页面
driver.maximize_window() driver.maximize_window()
# 加载
driver.implicitly_wait(20)
"""开始执行案例""" """开始执行案例"""
# 载入步骤集合 # 载入步骤集合
......
# author:qinguanglei # author:qinguanglei
# ddate:2023/11/20 9:23 # ddate:2023/11/20 9:23
__author__ = "qinguanglei"
""" """
case_tag:case,case_login,case_login_userid_error case_tag:case,login,case_login_userid_error
""" """
from selenium import webdriver
from test_login.steps_login import StepsLogin from airtest_selenium.proxy import *
from actions.actions_login.steps_login import StepsLogin
"""家庭作业""" """家庭作业"""
option = webdriver.ChromeOptions()
# option.add_experimental_option("detach", True) # 设置不要自动关闭浏览器
# 获取驱动器 # 获取驱动器
driver = webdriver.Chrome(options=option) driver = WebChrome()
# 最大化页面 # 最大化页面
driver.maximize_window() driver.maximize_window()
# 加载
driver.implicitly_wait(20)
"""开始执行案例""" """开始执行案例"""
# 载入步骤集合 # 载入步骤集合
......
# author:qinguanglei # author:qinguanglei
# ddate:2023/11/16 16:40 # ddate:2023/11/16 16:40
__author__ = "qinguanglei"
""" """
case_tag:case,case_login,case_login_verify_code_error case_tag:case,login,case_login_verify_code_error
""" """
from selenium import webdriver
from test_login.steps_login import StepsLogin from airtest_selenium.proxy import *
from actions.actions_login.steps_login import StepsLogin
"""家庭作业""" """家庭作业"""
option = webdriver.ChromeOptions()
# option.add_experimental_option("detach", True) # 设置不要自动关闭浏览器
# 获取驱动器 # 获取驱动器
driver = webdriver.Chrome(options=option) driver = WebChrome()
# 最大化页面 # 最大化页面
driver.maximize_window() driver.maximize_window()
# 加载
driver.implicitly_wait(20)
"""开始执行案例""" """开始执行案例"""
# 载入步骤集合 # 载入步骤集合
......
...@@ -16,7 +16,9 @@ sleep(4) ...@@ -16,7 +16,9 @@ sleep(4)
driver.find_element_by_id("kw").send_keys("airtest") driver.find_element_by_id("kw").send_keys("airtest")
sleep(4) sleep(4)
driver.airtest_touch(Template(r"tpl1691374901526.png", record_pos=(12.3, 2.8), resolution=(100, 100))) driver.snapshot()
#driver.airtest_touch(Template(r"tpl1691374901526.png", record_pos=(12.3, 2.8), resolution=(100, 100)))
......
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