from selenium.webdriver.support import expected_conditions as EC from selenium.webdriver.support.wait import WebDriverWait import time import os.path from framework.logger import Logger logger = Logger(logger='BasePage').getlog() class BasePage(object): #构造函数 def __init__(self, driver): self.driver = driver # 后退动作 def back(self): self.driver.back() logger.info('click back on current page') # 前进动作 def forward(self): self.driver.forward() logger.info('click forward on current page') #清除文本框内容 def clear(self, *loc): a2 = self.find_element(*loc) try: a2.clear() except Exception as e: # self.get_windows_img() logger.error('error:%s' % e)
#-*-coding:GBK -*- import requests import unittest import json from framework.testApiUpdate import testApi from framework import readConfigFile from testCase.test_get_Nonce_A import Test_get_Nonce from testCase.test_get_token_B import Test_get_Token from framework.testPage import Phone from testCase.test_create_user_K import Test_client_Create from testCase.test_group_create_G import Test_Group_create from testCase.test_file_upload_N import Test_file_upload import os from framework.readExcel import ReadExcel from framework.logger import Logger mylog = Logger(logger="Test_register").getlog() class Test_register(unittest.TestCase): '''接口名称: register''' def setUp(self): print("start") def tearDown(self): print("end") @unittest.skip("for a while mode") def test_registers(self): content = Test_get_Nonce().test_get_nonces()
from selenium.webdriver.support.wait import WebDriverWait from selenium.webdriver.support import expected_conditions as EC from framework.logger import Logger import os import time logger = Logger("basepage").getlog() class basepage(object): def __init__(self, driver): self.driver = driver def get_window_img(self): file_path = os.path.dirname(os.path.abspath('.')) + '/screenshots/' rq = time.strftime("%Y%m%d%H%M", time.localtime(time.time())) screen_name = file_path + rq + '.png' try: self.driver.get_screenshot_as_file(screen_name) logger.info("had take and save to folder : /screenshots") except Exception as e: self.get_window_img() logger.error("faild take screenshots!! %s" % e) def open_url(self, url): self.driver.get(url) logger.info("open the browser") def quit(self): self.driver.quit() logger.info("exit current behavior")
from framework.logger import Logger log = Logger(logger='log').getlog() print(log.info('cesi')) input_box = "id=>kw" search_submit_bth = "xpath=>//*[@id='su']" a = input_box.split('=>')[0] b = input_box.split('=>')[1] print(a) print(b)
import os.path from configparser import ConfigParser from selenium import webdriver from framework.logger import Logger logger = Logger(logger="BrowserEngine").getlog() class BrowserEngine(object): dir = os.path.dirname(os.path.abspath('.')) #相对路径 chrome_driver_path = dir + '/tool/chromedriver.exe' ie_driver_path = dir + '/tool/IEDriver.exe' firefox_driver_path = dir + '/tool/geckodriver.exe' def open_browser(self): config = ConfigParser() file_path = os.path.dirname( os.path.abspath('.')) + '/config/config.ini' config.read(file_path) browser = config.get("browserType", "browserName") logger.info("读取浏览器成功") url = config.get("testServer", "URL") logger.info("找到URL:%s" % url) if browser == "Firefox": logger.info("浏览器为火狐") elif browser == "Chrome": self.driver = webdriver.Chrome(self.chrome_driver_path) logger.info("浏览器为谷歌") else: self.driver = webdriver.Ie(self.ie_driver_path) logger.info("浏览器为IE") self.driver.get(url)
#!/user/bin/env python3 # -*- coding: utf-8 -*- #!/user/bin/env python3 # -*- coding: utf-8 -*- import datetime, json import operator from framework.Inquiry_info import * from config.config import * from framework.Query_db import Query_DB from framework.logger import Logger from config.config import day_report_lusion logger = Logger(logger="ServiceAPI").getlog() # print((StartTime + datetime.timedelta(days=1)).strftime("%Y-%m-%d %H:%M:%S")) # # 2019-03-29 17:25:19 # print((StartTime + datetime.timedelta(days=-2)).strftime("%Y-%m-%d %H:%M:%S")) # # 2019-03-27 17:26:23 class day_report(): #日报 def daily_repair_rate(self, dic): #日修复率 "" # dic={ # "module":'', # 'product':'', # 'StartTime':'', # 'End_Time':'', # } # StartTime_srt = '%s 00:00:00'%(dic['StartTime']) # End_Time_srt= '%s 23:59:59'%(dic['End_Time']) logger.info(dic)
from selenium.webdriver.common.by import By from PageObjects.base import BasePage from framework.logger import Logger import time #获取一个loger对象,调用getlog()方法: logger=Logger(logger="yiban_homepage1").getlog() #封装了案件详情页面的方法: class yiban_homepage1(BasePage): #输入伤者姓名--------------------------------基本信息模块儿 yiban_homepage1_input_input2_loc=(By.CSS_SELECTOR,'html body #baseInfor table tr:nth-child(6) td:nth-child(2) .textfield') #输入联系电话 yiban_homepage1_input_input3_loc=(By.CSS_SELECTOR,'html body #baseInfor table tr:nth-child(6) td:nth-child(4) .textfield') #点选三者类型 yiban_homepage1_button_button3_loc=(By.CSS_SELECTOR,'html body #baseInfor table tr:nth-child(7) td:nth-child(2) input') # #点选人伤归属 # yiban_homepage1_button_button16_loc=(By.CSS_SELECTOR,'html body #baseInfor table tr:nth-child(7) #injureBelongTd option:last-child') #点选责任比例 yiban_homepage1_button_button10_loc=(By.CSS_SELECTOR,'html body #baseInfor table tr:nth-child(10) td:nth-child(2) .textfield option:nth-child(3)') #选择户口性质---------------------------参考标准模块儿 yiban_homepage1_button_select1_loc=(By.CSS_SELECTOR,'html body #referenceStandardDiv table tr td:last-child option:nth-child(2)') #点击添加诊断----------------------------------诊断信息模块儿 yiban_homepage1_button_button4_loc=(By.CSS_SELECTOR,'html body #doLoadFSurvey #diagnosisDIV .titleInfo .other .button') #医院信息--点击增加医院--------------------------医院信息模块儿 yiban_homepage1_button_button11_loc=(By.CSS_SELECTOR,'html body #doLoadFSurvey #hospitalDIV div .other .button') #点击添加就诊医院图标
from selenium.webdriver.support.wait import WebDriverWait from selenium.webdriver.support import expected_conditions as EC from framework.logger import Logger import os import time logger = Logger(logger="BasePage").getlog() #希望输出哪个类输出的信息 class BasePage(object): def __init__(self, driver): self.driver = driver def back(self): self.driver.back() logger.info("浏览器后退") def forward(self): self.driver.forward() logger.info("浏览器前进") def open_url(self, url): self.driver.get(url) def quit_broswer(self): self.driver.quit() def close(self): try: self.driver.close() logger.info("关闭当前页面")
# coding=utf-8 import time from selenium.common.exceptions import NoSuchElementException, StaleElementReferenceException, WebDriverException import os.path from framework.logger import Logger from framework.HTMLTestReportCN import DirAndFiles import time import inspect from selenium.webdriver.common.by import By from selenium.webdriver.remote.webdriver import WebDriver # create a logger instance logger = Logger(logger="ElementOperation").getlog() # last_locate='' class BasePage(object): """ 定义一个页面基类,让所有页面都继承这个类,封装常用的页面操作方法到这个类 """ def __init__(self, driver): self.driver = driver self.daf = DirAndFiles() @property def title(self): """获取当前网页的标题""" return self.driver.title @property def browser_name(self):
#!/user/bin/env python3 # -*- coding: utf-8 -*- import pymysql, re from framework.logger import Logger logger = Logger(logger="GetDBdata").getlog() import configparser, os proDir = os.getcwd() configPath = os.path.join(proDir, "config\config.ini") cf = configparser.ConfigParser() cf.read(configPath, encoding="utf-8-sig") host = cf.get("DATABASE", "host") user = cf.get("DATABASE", "user") password = cf.get("DATABASE", "password") DB = 'test' port = cf.get("DATABASE", "port") class GetDBdata(): def query_db_all(self, sql): # 查询表中所有数据 lists = [] # 打开数据库连接 db = pymysql.connect(host, user, password, DB) # 使用cursor()方法获取操作游标 cursor = db.cursor() # cursor = db.cursor(MySQLdb.cursors.DictCursor) try: # 执行SQL语句
# coding=utf-8 import time import unittest from framework.logger import Logger from framework.browser_engine import BrowserEngine from xy_pageobjects.login import Login from xy_pageobjects.logout import Logout from xy_pageobjects.accountingManage import AccountingManage logger = Logger(logger="Accounting").getlog() class Accounting(unittest.TestCase): @classmethod def setUpClass(cls): browser = BrowserEngine(cls) cls.driver = browser.open_browser(cls) # 登录 login = Login() login.log_in(cls) @classmethod def tearDownClass(cls): # 登出 cls.driver.switch_to.default_content() logout = Logout() logout.log_out(cls) cls.driver.quit() def test1_query_accounting(self):
import unittest from testsuites.base_testcase import BaseTestCase from pageobjects.homepage3 import HomePage3 from framework.logger import Logger import time logger = Logger(logger="DiscuzSearch3").getlog() class DiscuzSearch3(BaseTestCase): def test_homepage3(self): h3 = HomePage3(self.driver) # h3.get_url("http://127.0.0.1/forum.php") logger.info("网页获取成功") h3.denglu("admin") logger.info("登录成功") title = h3.sousuo("haotest") try: self.assertEqual(title, "haotest", msg=title) logger.info("断言验证成功") print(title) except: logger.error("断言验证错误") print("错误") h3.tuichu() logger.info("退出成功") if __name__ == "__main__": unittest.main()
# coding=utf-8 import json import unittest import requests from framework import readConfigFile from framework.logger import Logger config = readConfigFile.ReadConfig() mylog = Logger(logger="test_login").getlog() def test_Login_token(): """ 登录 :return: """ host = config.get_http("browserName") url = host + "/api/v1/user/account/login" headers = { 'Content-Type': "application/x-www-form-urlencoded", 'cache-control': "no-cache", } payload = "username=15074709134&password=123456&captcha=&systemCode=kuaishou&loginType=1&networkType=2G&udid=867194040464771&deviceId=973526c9b75c1323&deviceName=MI%206X&deviceModel=MI%206X&vendor=xiaomi&operatingSystem=8.1.0&appVersion=2.0.4&deviceResolution=1080*2030&imei=867194040464771&pushId=1104a89792ed4f4b20e&undefined=" response = requests.post(url, data=payload, headers=headers, verify=False) print(response.text) assert response.json()['message'], "成功" assert response.json()['success'], True assert response.json()['code'], 1
# coding=utf-8 import time import unittest from framework.logger import Logger from framework.browser_engine import BrowserEngine from xy_pageobjects.login import Login from xy_pageobjects.logout import Logout from xy_pageobjects.flowManage import FlowManage logger = Logger(logger="Flow").getlog() class Flow(unittest.TestCase): @classmethod def setUpClass(cls): browser = BrowserEngine(cls) cls.driver = browser.open_browser(cls) # 登录 login = Login() login.log_in(cls) @classmethod def tearDownClass(cls): # 登出 cls.driver.switch_to.default_content() logout = Logout() logout.log_out(cls) cls.driver.quit() def test1_query_flow(self):
from zidonghua.base_testcase import base_testcase from PageObjects.caidan_shouciHomepage1 import shouci_homepage1 from PageObjects.yiban_Homepage1 import yiban_homepage1 from PageObjects.zhenduan_homepage import zhenduan_homepage from PageObjects.jiuzhen_type import jiuzhen from framework.logger import Logger #获取一个loger对象,调用getlog()方法: logger = Logger(logger="shangcanMen").getlog() class shangcanMen(base_testcase): def test_shangcanMen(self): logger.info( '--------------------------伤残+门诊治疗场景开始执行-----------------------') # 点击首次查勘---处理任务,选择处理中后点击查询按钮后,点击第一个案件---报案号,进入案件详情页: shangcanMen_homepage1 = shouci_homepage1(self.driver) shangcanMen_homepage1.shouci() # 进入案件详情页的操作--------点选事故类型,点选损失类型为:伤残,点选就诊类型为:门诊治疗 shangcanMen_homepage1 = jiuzhen(self.driver) shangcanMen_homepage1.shangcanMen() #输入伤者姓名、联系电话,点选三者类型, #点击添加诊断按钮,进入诊断伤情页面 : shangcanMen_homepage1 = yiban_homepage1(self.driver) shangcanMen_homepage1.xiangqing('伤残门诊自动化', '88888888') shangcanMen_homepage1.yiyuan() shangcanMen_homepage1.zhenduan() #进入诊断详情页面的操作------输入某一伤情名称,点击查询按钮,选择一诊断伤情点击添加到已选择,随后点击添加到主页面: shangcanMen_homepage1 = zhenduan_homepage(self.driver)
from testsuites.base_testcase import BaseTestCase from pageobjects.discuz02 import TwoDiscuz from pageobjects.discuz01 import OneDiscuz import unittest import time from framework.logger import Logger logger = Logger(logger="DiscuzTwoTest").getlog() class DiscuzTwoTest(BaseTestCase): '''第二题''' def testDiscuz(self): od = OneDiscuz(self.driver) od.login("admin", "admin") od.morenbankuai() td = TwoDiscuz(self.driver) td.delete() td.bankuaiguanli("admin") td.newbankuai() td.logout() od.login("123456", "123456") time.sleep(3) td.newbankuaifatie() od.fatie("新帖2", "新帖2的内容") od.huifu("新帖2的回复内容")
import unittest from framework.login_token import Login_Token from framework.RequestAPI import RequestAPI from framework.Out_info import Out_info import configparser, os proDir = os.getcwd() configPath = os.path.join(proDir, "config\config.ini") cf = configparser.ConfigParser() cf.read(configPath) #,encoding="utf-8-sig" from framework.logger import Logger logger = Logger(logger="tets_2").getlog() url = cf.get("Data", "address") project = cf.get("Data", "project") #token = Login_Token().login_token()['data']['token'] # 获取登录token token = Login_Token().token_() # 获取配置文件中的token #token='' #设置token为空 class Test(unittest.TestCase): def setUp(self): print("----------SetUp -----\n") def tearDown(self): print("-----------TearDown----\n") def test_001(self): testname = "核对裂缝告警数量"
import xlrd from framework.logger import Logger logger = Logger(logger="Util").getlog() class Util(): def read_excel(self, excelPath, sheetname="sheet1"): # 打开excel表 workbook = xlrd.open_workbook(excelPath) # 打开对应的sheet sheet = workbook.sheet_by_name(sheetname) # 获取第一行,作为key keys = sheet.row_values(0) # 获取行数 nrows = sheet.nrows # 获取列数 ncols = sheet.ncols if nrows <= 1: logger.error("此列表有且仅有一行数据。") else: r = [] # 控制行数 for i in range(1, nrows): sheet_data = {} values = sheet.row_values(i) # 控制列数 for j in range(ncols): sheet_data[keys[j]] = values[j]
from pageobjects.luntan_reply_pagehome import reply_page from pageobjects.base import BasePage from selenium.webdriver.common.action_chains import ActionChains from framework.logger import Logger from pageobjects.luntan_post_pagehome import post_page import time logger = Logger(logger="startVota_page").getlog() class startVota_page(BasePage): def click_startVota(self): vota = post_page(self.driver) time.sleep(5) self.click(*vota.post_page_publish_submit_loc) self.click(*vota.post_page_vota_submit_loc) # actions = ActionChains(self.driver) # actions.move_to_element(vota.post_page_publish_submit_loc) # actions.click(vota.post_page_vota_submit_loc) # actions.perform()
from framework.base import BasePage from framework.logger import Logger from selenium.webdriver.common.by import By import time import unittest logger=Logger(logger="OneDiscuz").getlog() class OneDiscuz(BasePage): unittest_testcase=unittest.TestCase() name_input_login_loc=(By.ID,'ls_username') pwd_input_login_loc=(By.ID,'ls_password') login_button_login_loc=(By.CSS_SELECTOR,'tbody tr:nth-child(2) td:nth-child(3) button') assert_text_login_loc=(By.CSS_SELECTOR,'#um > p:nth-child(2) > strong > a') morenbankuai_button_morenbankuai_loc=(By.XPATH,'//*[@id="category_1"]/table/tbody/tr[1]/td[2]/h2/a') assert_text__morenbankuai_loc=(By.CSS_SELECTOR,'#ct > div > div.bm.bml.pbn > div > h1 > a') fatie_button_fatie_loc=(By.ID,'newspecial') title_input_fatie_loc=(By.NAME,'subject') body_input_fatie_loc=(By.CSS_SELECTOR,'body') fatie_submit_fatie_loc=(By.ID,'postsubmit') quickly_fatie_submit_fatie_loc=(By.CSS_SELECTOR,'#newspecial_menu > li:nth-child(1) > a') assert_text_fatie_loc=(By.ID,'thread_subject') huifu_input_huifu_loc=(By.ID,'fastpostmessage') huifu_submit_huifu_loc=(By.ID,'fastpostsubmit') assert_text_huifu_loc=(By.CSS_SELECTOR,'#postmessage_92') logout_button_logout_loc=(By.CSS_SELECTOR,'#um > p:nth-child(2) > a:nth-child(13)')
#-*-coding:GBK -*- import requests import unittest import json from framework.testApiUpdate import testApi from framework import readConfigFile from testCase.test_get_Nonce_A import Test_get_Nonce from testCase.test_get_token_B import Test_get_Token from framework.readExcel import ReadExcel from framework.logger import Logger mylog = Logger(logger="Test_token_Refresh").getlog() class Test_token_Refresh(unittest.TestCase): '''接口名称:token刷新''' def setUp(self): print("start") def tearDown(self): print("end") def test_token_Refreshs(self): content = Test_get_Nonce().test_get_nonces() appid = str(content[0]) # print(appid) access_token=Test_get_Token().test_get_tokens()
import time, os from framework.logger import Logger from selenium.common.exceptions import NoSuchElementException, TimeoutException from selenium.webdriver.support.wait import WebDriverWait from selenium.webdriver.support import expected_conditions as EC from selenium.webdriver.support.ui import Select # create a logger instance logger = Logger(logger='Tools').getlog() class Tools(): def __init__(self, driver): self.driver = driver #click to close browser def quit_browser(self): self.driver.quit() def forward(self): self.driver.forward() logger.info('Click forward on current page.') def back(self): self.driver.back() logger.info('Click back on current page.') def wait(self, seconds): self.driver.implicitly_wait(seconds) logger.info('wait for %d seconds.' % seconds)
from selenium.webdriver.common.by import By from pageobjects.base import BasePage from framework.logger import Logger logger = Logger(logger="SendTiePage").getlog() #发帖 class SendTiePage(BasePage): #默认板块 moren_link_loc = (By.CSS_SELECTOR, ".bm_c h2 a") #发帖内容、发帖标题输入框 input_content_loc = (By.CSS_SELECTOR, ".bm_c .pbt input") input_title_loc = (By.ID, "fastpostmessage") #发帖按钮 button_submit_loc = (By.ID, "fastpostsubmit") #点击默认板块 def click_moren(self): self.click(*self.moren_link_loc) #输入发帖内容 def contentInput(self, content, title): self.sendkeys(content, *self.input_content_loc) self.sendkeys(title, *self.input_title_loc) def click_fatie(self): self.click(*self.button_submit_loc)
#!/usr/bin/env python # -*- coding: utf-8 -*- # author: dcl # date: 2018/2/5 import unittest from framework.browser_engine import BrowserEngine from pageobjects.custom_manage_page import DisPage from pageobjects.cwrj_login_page import LoginPage from framework.logger import Logger import time logger = Logger(logger="custom_manage_page").getlog() class DistributeCustom(unittest.TestCase): """分配客户""" @classmethod def setUpClass(cls): """ 测试固件的setUp()的代码,主要是测试的前提准备工作 :return: """ browse = BrowserEngine(cls) cls.driver = browse.open_browser(cls) # 登录系统 loginpage = LoginPage(cls.driver) loginpage.user_login() time.sleep(3)
# 2.注释:包括记录创建时间,创建人,项目名称。 ''' Created on 2019-12-20 @author: 北京-宏哥 QQ交流群:705269076 Project: 《《一头扎进》系列之Python+Selenium框架设计篇4- 价值好几K的框架,不看别后悔,过时不候 ''' # 3.导入模块 import time from selenium.common.exceptions import NoSuchElementException import os.path from framework.logger import Logger # create a logger instance logger = Logger(logger="BasePage").getlog() class BasePage(object): """ 定义一个页面基类,让所有页面都继承这个类,封装一些常用的页面操作方法到这个类 """ def __init__(self, driver): self.driver = driver # quit browser and end testing def quit_browser(self): self.driver.quit() # 浏览器前进操作 def forward(self):
# coding=utf-8 import os import smtplib from email.mime.multipart import MIMEMultipart from email.mime.text import MIMEText from email.header import Header from email.mime.application import MIMEApplication from framework.logger import Logger logger = Logger(logger="Email").getlog() #定义发送邮件 def new_report(testreport): lists = os.listdir(testreport) lists.sort(key=lambda fn: os.path.getatime(testreport + "\\" + fn)) file_new = os.path.join(testreport, lists[-1]) print(file_new) return file_new def sendEmail(new_report, filename): ''' :param report_file:获取最新的文件 :param new_report_fail:获取最新的文件的路径 :param now:当前生成报告的时间 :return: :param sender 读取配置文件中发件人 :param sendpwd 读取配置文件中发件人密码 :param receiver 读取配置文件中收件人
import sys, unittest sys.path.append('.') from framework.logger import Logger from PageObject.pageMethon import Login from selenium import webdriver from selenium.webdriver.support.wait import WebDriverWait logger = Logger('163').getlogger() class Test_email163(unittest.TestCase): def setUp(self): self.driver = webdriver.Chrome() self.indexUrl = 'https://email.163.com/' self.driver.get(self.indexUrl) def tearDown(self): self.driver.quit() # # 登录 # def test_login(self): # Login(self.driver,'*****@*****.**','163688987').login_email163() # self.uid = WebDriverWait(self.driver, 20, 0.2).until( # lambda x: x.find_element_by_id('spnUid')).text # self.assertEqual(self.uid,'*****@*****.**') # 打开第一封邮件 def test_openEmail(self): Login(self.driver, '*****@*****.**', '163688987').login_email163() logger.info('login sucessful') self.emailComponentBtn = WebDriverWait(
#-*-coding:GBK -*- import requests import unittest import json from framework.testApiUpdate import testApi from framework import readConfigFile from framework.readExcel import ReadExcel from framework.logger import Logger mylog = Logger(logger="Test_get_Nonce").getlog() class Test_get_Nonce(unittest.TestCase): '''接口名称:获取nonce''' def setUp(self): print("start") def tearDown(self): print("end") def test_get_nonces(self): config = readConfigFile.ReadConfig() browser=config.get_http("browserName") excel = ReadExcel("nonce") data = excel.getData state_code = excel.getStatusCode
#!/user/bin/env python3 # -*- coding: utf-8 -*- import pymysql from framework.logger import Logger logger = Logger(logger="InsertDB").getlog() import configparser, os proDir = os.getcwd() configPath = os.path.join(proDir, "config\config.ini") cf = configparser.ConfigParser() cf.read(configPath, encoding="utf-8-sig") host = cf.get("DATABASE", "host") user = cf.get("DATABASE", "user") password = cf.get("DATABASE", "password") DB = cf.get("DATABASE", "DB") port = cf.get("DATABASE", "port") class InsertDB(): def insert_data(self, table_name, dicdata): #插入测试记录数据 # 打开数据库连接 db = pymysql.connect(host, user, password, DB) # 使用cursor()方法获取操作游标 cursor = db.cursor() dic_value = list(dicdata.values()) Test_ID, Test_Batch, Test_Version, Test_Time, Time_Stamp, Cultural_Name, Test_Chart, Code, Expected_Value, TimeConsuming, top1, top2, top3, Result, Color, Image_Path = dic_value # logger.info([test_batch, test_version, test_time, template, test_chart, expected_range, test_type, test_value, Timeconsuming, result, Color, Template_path, TestChart_path])
# coding=utf-8 import time import unittest import sys from framework.logger import Logger from framework.browser_engine import BrowserEngine from xy_pageobjects.login import Login from xy_pageobjects.logout import Logout from xy_pageobjects.customersManage import CustomersManage logger = Logger(logger="Customers").getlog() class Customers(unittest.TestCase): @classmethod def setUpClass(cls): browser = BrowserEngine(cls) cls.driver = browser.open_browser(cls) # 登录 login = Login() login.log_in(cls) @classmethod def tearDownClass(cls): # 登出 cls.driver.switch_to.default_content() logout = Logout() logout.log_out(cls) cls.driver.quit()