Commit 87b8feb6 authored by qianyanyan's avatar qianyanyan

auto_framework

parents
Pipeline #70 canceled with stages
znfz_autotest
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectRootManager" version="2" project-jdk-name="Python 3.6 " project-jdk-type="Python SDK" />
</project>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectModuleManager">
<modules>
<module fileurl="file://$PROJECT_DIR$/.idea/znfz_autotest.iml" filepath="$PROJECT_DIR$/.idea/znfz_autotest.iml" />
</modules>
</component>
</project>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="VcsDirectoryMappings">
<mapping directory="$PROJECT_DIR$" vcs="Git" />
</component>
</project>
\ No newline at end of file
This diff is collapsed.
<?xml version="1.0" encoding="UTF-8"?>
<module type="PYTHON_MODULE" version="4">
<component name="NewModuleRootManager">
<content url="file://$MODULE_DIR$">
<excludeFolder url="file://$MODULE_DIR$/venv" />
</content>
<orderEntry type="jdk" jdkName="Python 3.6 " jdkType="Python SDK" />
<orderEntry type="sourceFolder" forTests="false" />
</component>
<component name="PackageRequirementsSettings">
<option name="requirementsPath" value="" />
</component>
<component name="TestRunnerService">
<option name="projectConfiguration" value="py.test" />
<option name="PROJECT_TEST_RUNNER" value="py.test" />
</component>
</module>
\ No newline at end of file
# -*- coding:utf-8 -*-
from selenium import webdriver
from basepage.read_config import ReadConfig
import time
import string
from basepage.logger import Logger
logger = Logger(logger="browser_engine").getlog()
class BrowserEngine(object):
def open_browser(self):
conf = ReadConfig()
browser = conf.get_browserType('browserName')
url = conf.get_testUrl('URL')
logger.info("browserName: %s" % browser)
#driver = webdriver.Chrome(r"C:\Program Files (x86)\Google\Chrome\Application\chromedriver.exe")
driver = webdriver.Chrome(r"D:\mywork\autotest\znfz_autotest\driver\chromedriver.exe")
driver.get(url)
logger.info("Open url: %s" % url)
time.sleep(3)
driver.maximize_window()
logger.info("Maximize the current window.")
driver.implicitly_wait(10)
logger.info("Set implicitly wait 10 seconds.")
return driver
def login_znfz(self):
conf = ReadConfig()
username = conf.get_userInfo('username')
password = conf.get_userInfo('password')
url = conf.get_testUrl('URL')
print(username, password, url)
logger.info("username: %s" %username)
#logger.info(string.Formatter("username: %s, password: %s, open url: %s", username, password, url))
#logger.info("password :%s" % password)
#logger.info("Open url: %s" % url)
browser = BrowserEngine()
driver = browser.open_browser()
tags = driver.find_element_by_xpath('//*[@id="root"]/div/div/div[2]/form/div[1]/div/div/span/span/span')
logger.info("tags.text:%s" % tags.text)
#print(tags.text)
tags.click()
time.sleep(1)
driver.find_element_by_xpath('//*[@id="rc-tree-select-list_1"]/ul/li/ul/li[3]/span[1]').click()
tags2 = driver.find_element_by_xpath('//*[@id="rc-tree-select-list_1"]/ul/li/ul/li[3]/ul/li[3]/span[2]/span')
logger.info("tags2.text:%s" % tags2.text)
#print(tags2.text)
tags2.click()
time.sleep(1)
driver.find_element_by_xpath('//*[@id="username"]').send_keys(username)
driver.find_element_by_xpath('//*[@id="password"]').send_keys(password)
driver.find_element_by_xpath('//*[@id="root"]/div/div/div[2]/form/div[4]/div/div/span/button').click()
return driver
'''
if __name__ == '__main__':
cls = BrowserEngine()
test = cls.open_browser()
time.sleep(3)
test.quit()
'''
\ No newline at end of file
import sys
import time
from basepage.browser_engine import BrowserEngine
from basepage.logger import Logger
from basepage.read_config import ReadConfig
logger = Logger(logger="check_gsjd").getlog()
class CheckGsjd(object):
#选择审查起诉
def choose_gsjd(self):
browser = BrowserEngine()
driver = browser.login_znfz()
#tags = driver.find_element_by_xpath('/html/body/div[1]/div/section/aside/div/ul/li[3]/a/span')
tags = driver.find_element_by_xpath('/html/body/div[1]/div/section/aside/div/ul/li[3]')
#print(tags.text)
logger.info("tags.text:%s" % tags.text)
tags.click()
time.sleep(10)
return driver
#选择审查起诉案件
def choose_gsjd_case(self, driver):
conf = ReadConfig()
caseId = conf.get_caseId('caseId')
logger.info("the caseId : %s" % caseId)
# driver.find_element_by_xpath('/html/body/div[1]/div/section/section/main/div/div[2]/div/div/div[1]/form/div[1]/div[3]/input').send_keys(caseId)
driver.find_element_by_xpath('//*[@id="ajmc"]').send_keys(caseId)
#点击按钮
driver.find_element_by_xpath( '/html/body/div[1]/div/section/section/main/div/div[2]/div/div/div[1]/form/div[2]/div/button[2]').click()
time.sleep(5)
#点击办理
tags = driver.find_element_by_xpath('/html/body/div[1]/div/section/section/main/div/div[2]/div/div/div[2]/div[2]/div/div/div/div/div/div[2]/table/tbody/tr/td[7]/p/a')
#print(tags.text)
logger.info("tags.text:%s" % tags.text)
tags.click()
#driver.find_element_by_tag_name(tags.text).click()
if __name__ == '__main__':
test = CheckGsjd()
driver = test.choose_gsjd()
test.choose_gsjd_case(driver)
'''
conf = ReadConfig()
caseId = conf.get_caseId('caseId')
logger.info("the caseId : %s" % caseId)
# driver.find_element_by_xpath('/html/body/div[1]/div/section/section/main/div/div[2]/div/div/div[1]/form/div[1]/div[3]/input').send_keys(caseId)
driver.find_element_by_xpath('//*[@id="ajmc"]').send_keys(caseId)
# 点击按钮
driver.find_element_by_xpath(
'/html/body/div[1]/div/section/section/main/div/div[2]/div/div/div[1]/form/div[2]/div/button[2]').click()
# 点击办理
#tags = driver.find_element_by_xpath('/html/body/div[1]/div/section/section/main/div/div[2]/div/div/div[2]/div[2]/div/div/div/div/div/div[2]/table/tbody/tr/td[7]/p/a')
time.sleep(5)
tags = driver.find_element_by_xpath('/html/body/div[1]/div/section/section/main/div/div[2]/div/div/div[2]/div[2]/div/div/div/div/div/div[2]/table/tbody/tr/td[3]/p/span')
print(tags.text)
tags.click()
#links = driver.find_element_by_tag_name("办理")
#print(links.text)
#tags.click()
#print (tags.text)
#tags.click()
'''
\ No newline at end of file
import sys
import time
from basepage.browser_engine import BrowserEngine
from basepage.logger import Logger
logger = Logger(logger="check_zcjd").getlog()
class CheckZcjd:
#选择审查逮捕
def choose_zcjd(self):
browser = BrowserEngine()
driver = browser.login_znfz()
tags = driver.find_element_by_xpath('/html/body/div[1]/div/section/aside/div/ul/li[2]/a/span')
#print(tags.text)
logger.info("tags.text;%s" % tags.text)
tags.click()
time.sleep(10)
if __name__ == '__main__':
test = CheckZcjd()
test.choose_zcjd()
\ No newline at end of file
import psycopg2
import json
conn = psycopg2.connect(database = 'cmrobot',user = 'cmrobot', password = 'cmrobot',host = '192.168.2.31',port = '5432')
curs = conn.cursor()
sql = "select jsondata from znfz_wsst_nlp where bmsah = '瓯检起诉受[2020]33030401160号'"
curs.execute(sql)
data = curs.fetchall()
print("python原始数据:",data)
print(type(data))
data_len = len(data)
print(data_len,data[0])
data_len_1 = len(data[0][0])
print(data_len_1,data[0][0]['zr'])
#print(data_len_1,data[0][0])
file_handle = open('D:/mywork/f11.txt',mode='w')
file_handle.write(str(data[0][0]))
file_handle.close()
#data2=json.loads(data)
#print(type(data2))
json_str = json.dumps(data[0])
print("JSON 对象:", json_str)
print(type(json_str))
file_handle = open('D:/mywork/f2.txt',mode='w')
file_handle.write(str(json_str))
file_handle.close()
data1=json.loads(json_str)
print(data1)
print(type(data1))
file_handle = open('D:/mywork/f3.txt',mode='w')
file_handle.write(str(data1))
file_handle.close()
curs.close()
conn.close()
import os.path
import logging
import time
class Logger(object):
def __init__(self, logger):
self.logger = logging.getLogger(logger)
self.logger.setLevel(logging.DEBUG)
rq = time.strftime('%Y%m%d%H%M', time.localtime(time.time()))
log_path = os.path.dirname(os.path.abspath('.')) + '/logs/'
log_name = log_path + rq + '.log'
fh = logging.FileHandler(log_name)
fh.setLevel(logging.INFO)
ch = logging.StreamHandler()
ch.setLevel(logging.INFO)
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
fh.setFormatter(formatter)
ch.setFormatter(formatter)
self.logger.addHandler(fh)
self.logger.addHandler(ch)
def getlog(self):
return self.logger
\ No newline at end of file
import os
import configparser
from basepage.logger import Logger
'''
proDir = os.path.split(os.path.realpath(__file__))[0]
print(proDir)
configPath = os.path.join(proDir, "config.ini")
print(configPath)
'''
logger = Logger(logger='read_config').getlog()
#logger = logging.getLogger('read_config')
proDir = os.path.dirname(os.path.abspath('.'))
configPath = os.path.dirname(os.path.abspath('.')) +r'\config\config.ini'
logger.info("the configPath: %s" % configPath)
class ReadConfig:
def __init__(self):
self.cf = configparser.ConfigParser()
self.cf.read(configPath,encoding="utf-8-sig")
def get_browserType(self, param):
value = self.cf.get("browserType", param)
logger.info("the browserType : %s" % value)
return value
def get_testUrl(self, param):
value = self.cf.get("testUrl", param)
logger.info("the testUrl : %s" % value)
return value
def get_userInfo(self, param):
value = self.cf.get("userInfo", param)
logger.info("the userInfo : %s" % value)
return value
def get_caseId(self, param):
value = self.cf.get("gsjdCase", param)
logger.info("the gsjdCase : %s" % value)
return value
'''
if __name__ == '__main__':
test = ReadConfig()
browser = test.get_browserType('browserName')
username = test.get_userInfo('username')
password = test.get_userInfo('password')
print(browser,username,password)
'''
\ No newline at end of file
# this is config file, only store browser type and server URL
[browserType]
#browserName = Firefox
browserName = Chrome
#browserName = IE
[testUrl]
#URL = https://www.baidu.com
URL = http://192.168.2.31/cm
[userInfo]
username=周朝阳
password=qazwsxedc
[dataBase]
ip=192.168.2.31
port=5432
user=cmrobot
pasword=cmrobot
database=cmrobot
#起诉案件
[gsjdCase]
#考虑循环
caseId=33030401160
2020-06-10 15:22:08,642 - read_config - INFO - the configPath: D:\mywork\autotest\znfz_autotest\config\config.ini
2020-06-10 15:22:08,664 - read_config - INFO - the userInfo : 周朝阳
2020-06-10 15:22:08,664 - read_config - INFO - the userInfo : qazwsxedc
2020-06-10 15:22:08,664 - read_config - INFO - the testUrl : http://192.168.2.31/cm
2020-06-10 15:22:08,665 - browser_engine - INFO - username: 周朝阳
2020-06-10 15:22:08,666 - read_config - INFO - the browserType : Chrome
2020-06-10 15:22:08,666 - read_config - INFO - the testUrl : http://192.168.2.31/cm
2020-06-10 15:22:08,667 - browser_engine - INFO - browserName: Chrome
2020-06-10 15:22:44,094 - browser_engine - INFO - Open url: http://192.168.2.31/cm
2020-06-10 15:22:51,233 - browser_engine - INFO - Maximize the current window.
2020-06-10 15:22:51,235 - browser_engine - INFO - Set implicitly wait 10 seconds.
2020-06-10 15:22:51,280 - browser_engine - INFO - tags.text:请选择所属部门
2020-06-10 15:22:52,624 - browser_engine - INFO - tags2.text:瓯海区院
2020-06-10 15:23:01,896 - check_gsjd - INFO - tags.text:审查起诉
2020-06-10 15:23:12,050 - read_config - INFO - the gsjdCase : 33030401160
2020-06-10 15:23:12,050 - check_gsjd - INFO - the caseId : 33030401160
2020-06-10 15:23:17,670 - check_gsjd - INFO - tags.text:办理
body {
font-family: Helvetica, Arial, sans-serif;
font-size: 12px;
/* do not increase min-width as some may use split screens */
min-width: 800px;
color: #999;
}
h1 {
font-size: 24px;
color: black;
}
h2 {
font-size: 16px;
color: black;
}
p {
color: black;
}
a {
color: #999;
}
table {
border-collapse: collapse;
}
/******************************
* SUMMARY INFORMATION
******************************/
#environment td {
padding: 5px;
border: 1px solid #E6E6E6;
}
#environment tr:nth-child(odd) {
background-color: #f6f6f6;
}
/******************************
* TEST RESULT COLORS
******************************/
span.passed, .passed .col-result {
color: green;
}
span.skipped, span.xfailed, span.rerun, .skipped .col-result, .xfailed .col-result, .rerun .col-result {
color: orange;
}
span.error, span.failed, span.xpassed, .error .col-result, .failed .col-result, .xpassed .col-result {
color: red;
}
/******************************
* RESULTS TABLE
*
* 1. Table Layout
* 2. Extra
* 3. Sorting items
*
******************************/
/*------------------
* 1. Table Layout
*------------------*/
#results-table {
border: 1px solid #e6e6e6;
color: #999;
font-size: 12px;
width: 100%
}
#results-table th, #results-table td {
padding: 5px;
border: 1px solid #E6E6E6;
text-align: left
}
#results-table th {
font-weight: bold
}
/*------------------
* 2. Extra
*------------------*/
.log:only-child {
height: inherit
}
.log {
background-color: #e6e6e6;
border: 1px solid #e6e6e6;
color: black;
display: block;
font-family: "Courier New", Courier, monospace;
height: 230px;
overflow-y: scroll;
padding: 5px;
white-space: pre-wrap
}
div.image {
border: 1px solid #e6e6e6;
float: right;
height: 240px;
margin-left: 5px;
overflow: hidden;
width: 320px
}
div.image img {
width: 320px
}
div.video {
border: 1px solid #e6e6e6;
float: right;
height: 240px;
margin-left: 5px;
overflow: hidden;
width: 320px
}
div.video video {
overflow: hidden;
width: 320px;
height: 240px;
}
.collapsed {
display: none;
}
.expander::after {
content: " (show details)";
color: #BBB;
font-style: italic;
cursor: pointer;
}
.collapser::after {
content: " (hide details)";
color: #BBB;
font-style: italic;
cursor: pointer;
}
/*------------------
* 3. Sorting items
*------------------*/
.sortable {
cursor: pointer;
}
.sort-icon {
font-size: 0px;
float: left;
margin-right: 5px;
margin-top: 5px;
/*triangle*/
width: 0;
height: 0;
border-left: 8px solid transparent;
border-right: 8px solid transparent;
}
.inactive .sort-icon {
/*finish triangle*/
border-top: 8px solid #E6E6E6;
}
.asc.active .sort-icon {
/*finish triangle*/
border-bottom: 8px solid #999;
}
.desc.active .sort-icon {
/*finish triangle*/
border-top: 8px solid #999;
}
[pytest]
markers= case1
case2
case3
\ No newline at end of file
This diff is collapsed.
import pytest
import sys
import time
sys.path.append('..')
from basepage.browser_engine import BrowserEngine
from basepage.check_gsjd import CheckGsjd
@pytest.mark.case3
def test_gsid_case1():
# browser = BrowserEngine()
# driver = browser.login_znfz()
test = CheckGsjd()
driver = test.choose_gsjd()
test.choose_gsjd_case(driver)
time.sleep(20)
driver.quit()
\ No newline at end of file
import pytest
import time
import sys
sys.path.append('..')
from basepage.read_config import ReadConfig
from basepage.browser_engine import BrowserEngine
from basepage.logger import Logger
logger = Logger(logger="testLogin").getlog()
'''
def setup_function():
print('setup_function:每个用例开始前都会执行')
def teardown_function():
print('teardown_function:每个用例结束后都会执行')
'''
@pytest.mark.case1
def test_login():
conf = ReadConfig()
username = conf.get_userInfo('username')
password = conf.get_userInfo('password')
url = conf.get_testUrl('URL')
print(username,password,url)
logger.info("username: %s" % username)
logger.info("password :%s" % password)
logger.info("Open url: %s" % url)
browser = BrowserEngine()
driver = browser.open_browser()
tags = driver.find_element_by_xpath('//*[@id="root"]/div/div/div[2]/form/div[1]/div/div/span/span/span')
#print(tags.text)
logger.info("tags.text:%s" % tags.text)
tags.click()
time.sleep(1)
driver.find_element_by_xpath('//*[@id="rc-tree-select-list_1"]/ul/li/ul/li[3]/span[1]').click()
tags2 = driver.find_element_by_xpath('//*[@id="rc-tree-select-list_1"]/ul/li/ul/li[3]/ul/li[3]/span[2]/span')
#print(tags2.text)
logger.info("tags2.text:%s" % tags2.text)
tags2.click()
time.sleep(1)
driver.find_element_by_xpath('//*[@id="username"]').send_keys(username)
driver.find_element_by_xpath('//*[@id="password"]').send_keys(password)
driver.find_element_by_xpath('//*[@id="root"]/div/div/div[2]/form/div[4]/div/div/span/button').click()
time.sleep(10)
driver.quit()
@pytest.mark.case2
def test_login2():
browser = BrowserEngine()
driver = browser.login_znfz()
time.sleep(10)
driver.quit()
if __name__ == '__main__':
#pytest.main("D:/mywork/autotest/znfz_test1/test_cases")
# pytest.main(["-m=case1","--html=report.html"])
pytest.main()
import pytest
#def test_main():
# assert 5 != 5
def func(x):
return x + 1
@pytest.mark.case3
def test_file2_answer1():
assert func(9) == 10
#if __name__ == '__main__':
#pytest.main("D:/mywork/autotest/znfz_test1/test_cases")
# pytest.main(["-m=case1","--html=report.html"])
\ No newline at end of file
body {
font-family: Helvetica, Arial, sans-serif;
font-size: 12px;
/* do not increase min-width as some may use split screens */
min-width: 800px;
color: #999;
}
h1 {
font-size: 24px;
color: black;
}
h2 {
font-size: 16px;
color: black;
}
p {
color: black;
}
a {
color: #999;
}
table {
border-collapse: collapse;
}
/******************************
* SUMMARY INFORMATION
******************************/
#environment td {
padding: 5px;
border: 1px solid #E6E6E6;
}
#environment tr:nth-child(odd) {
background-color: #f6f6f6;
}
/******************************
* TEST RESULT COLORS
******************************/
span.passed, .passed .col-result {
color: green;
}
span.skipped, span.xfailed, span.rerun, .skipped .col-result, .xfailed .col-result, .rerun .col-result {
color: orange;
}
span.error, span.failed, span.xpassed, .error .col-result, .failed .col-result, .xpassed .col-result {
color: red;
}
/******************************
* RESULTS TABLE
*
* 1. Table Layout
* 2. Extra
* 3. Sorting items
*
******************************/
/*------------------
* 1. Table Layout
*------------------*/
#results-table {
border: 1px solid #e6e6e6;
color: #999;
font-size: 12px;
width: 100%
}
#results-table th, #results-table td {
padding: 5px;
border: 1px solid #E6E6E6;
text-align: left
}
#results-table th {
font-weight: bold
}
/*------------------
* 2. Extra
*------------------*/
.log:only-child {
height: inherit
}
.log {
background-color: #e6e6e6;
border: 1px solid #e6e6e6;
color: black;
display: block;
font-family: "Courier New", Courier, monospace;
height: 230px;
overflow-y: scroll;
padding: 5px;
white-space: pre-wrap
}
div.image {
border: 1px solid #e6e6e6;
float: right;
height: 240px;
margin-left: 5px;
overflow: hidden;
width: 320px
}
div.image img {
width: 320px
}
div.video {
border: 1px solid #e6e6e6;
float: right;
height: 240px;
margin-left: 5px;
overflow: hidden;
width: 320px
}
div.video video {
overflow: hidden;
width: 320px;
height: 240px;
}
.collapsed {
display: none;
}
.expander::after {
content: " (show details)";
color: #BBB;
font-style: italic;
cursor: pointer;
}
.collapser::after {
content: " (hide details)";
color: #BBB;
font-style: italic;
cursor: pointer;
}
/*------------------
* 3. Sorting items
*------------------*/
.sortable {
cursor: pointer;
}
.sort-icon {
font-size: 0px;
float: left;
margin-right: 5px;
margin-top: 5px;
/*triangle*/
width: 0;
height: 0;
border-left: 8px solid transparent;
border-right: 8px solid transparent;
}
.inactive .sort-icon {
/*finish triangle*/
border-top: 8px solid #E6E6E6;
}
.asc.active .sort-icon {
/*finish triangle*/
border-bottom: 8px solid #999;
}
.desc.active .sort-icon {
/*finish triangle*/
border-top: 8px solid #999;
}
This diff is collapsed.
Markdown is supported
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