1 # -*- coding:utf-8 -*- 2 from selenium import webdriver 3 #导入webself.driver 4 import requests 5 # 导入request模块 6 from selenium.webdriver.support.ui import Select 7 #用于定位下拉框 8 import time 9 #导入时间控件 10 import unittest 11 #导入unittest框架 12 from HTMLTestRunner import HTMLTestRunner 13 #d导入HTMLTestRunner模块,用于生成测试报告 14 from selenium.webdriver.common.keys import Keys 15 # 导入键盘机制 16 import qrcode 17 import datetime 18 import os 19 20 21 22 23 class Deposit_Test(unittest.TestCase): 24 num = 100 25 @classmethod 26 def setUpClass(self): 27 chrome_options = webdriver.ChromeOptions() 28 chrome_options.add_experimental_option('useAutomationExtension', False) 29 chrome_options.add_experimental_option("excludeSwitches", ['enable-automation']) 30 self.driver = webdriver.Chrome(executable_path="C:Downloadchromedriver.exe", options=chrome_options) 31 _url = "http://bdms.XXX.com/" 32 self.driver.get(_url) 33 time.sleep(2) 34 name = ("92510521MA649F3333") 35 password = name[-8:] 36 print("密码:",password) 37 self.driver.find_element_by_id("loginName").send_keys(name) 38 self.driver.find_element_by_xpath("/html/body/div[1]/div/div[2]/div[2]/input").send_keys(password) 39 self.driver.find_element_by_xpath("/html/body/div[1]/div/div[2]/div[3]/input").click() 40 time.sleep(2) 41 self.driver.find_element_by_xpath("/html/body/div[1]/div/div[2]/input").click() 42 self.driver.maximize_window() 43 self.driver.fullscreen_window() 44 browser_size = self.driver.get_window_size() 45 browser_name = self.driver.name 46 title = self.driver.title 47 print(title) 48 time.sleep(2) 49 try: 50 self.driver.find_element_by_xpath("/html/body/div[1]/div/div[5]/div[2]/div[3]/span[1]").click() 51 print("关闭未签约弹窗") 52 except: 53 pass 54 # 未签约用户,关闭弹窗 55 print("浏览器名称:" + browser_name) 56 print("浏览器版本 :", self.driver.capabilities["browserVersion"]) 57 print("浏览器尺寸:", browser_size) 58 @classmethod 59 def tearDownClass(self): 60 self.driver.quit() 61 print("执行完成关闭浏览器") 62 63 def test_001(self): 64 '''销售→退押金整体流程''' 65 self.driver.find_element_by_xpath("/html/body/div[1]/div/div[1]/div[2]/div[1]/div").click() 66 # 售卖农药→退押金 67 count = 10 68 salelist = [] 69 # 打开*个页面,售卖个数= count*10 70 for i in range(count): 71 result = requests.get('http://10.2.178.11:8099/test?pagenum=' + str(i)) 72 # 遍历*个页面 73 resultJson = result.json() 74 # 把数据导出为json字符串 75 print("解析结果", resultJson['data']) 76 # 打印结果 77 for nyObj in resultJson['data']: 78 # 遍历导出的json数据 79 print("农药对象为:", nyObj) 80 print("编号:", nyObj[0]) 81 print("名称:", nyObj[1]) 82 print("二维码:", nyObj[2]) 83 salelist.append(nyObj[2]) 84 # 每次遍历后提取nyobj[2]的数据,并且放入salelist数组内 85 print("已销售农药二维码:", salelist) 86 # 打印list 87 self.driver.find_element_by_id("myInputCode").send_keys( nyObj[2]) 88 # 把农药二维码/追溯码当做参数传入输入框内 89 # time.sleep(1) 90 self.driver.find_element_by_id("myInputCode").send_keys(Keys.ENTER) 91 time.sleep(1) 92 # 输入农药二维码/追溯码后,点击键盘回车键 93 time.sleep(1) 94 self.driver.find_element_by_class_name("btnDefault").click() 95 # 点击销售按钮 96 time.sleep(2) 97 self.driver.find_element_by_xpath("/html/body/div[1]/div/div[2]/div/div[3]/div[1]/div[2]/div/div[2]/span/button[1]").click() 98 time.sleep(3) 99 print("销售农药个数:",count*10) 100 # 展示销售个数 101 print(salelist) 102 try: 103 self.driver.find_element_by_xpath("/html/body/div[1]/div/div[2]/div/div[3]/div[1]/div[2]/div/div[2]/span/button[1]").click() 104 except: 105 pass 106 # 打印list:把nyobj[2]的数据放入list数组中 107 time.sleep(1) 108 self.driver.find_element_by_xpath("/html/body/div[1]/div/div[1]/div[2]/div[2]").click() 109 time.sleep(6) 110 # 点击退押金按钮 111 returned1 = self.driver.find_element_by_xpath("/html/body/div[1]/div/div[3]/div[2]/span").text[0:-4] 112 returned1 = int(returned1) 113 print("退押金前退回押金总额:",returned1) 114 time.sleep(60) 115 # 等待60s:销售60s后方可退押金 116 for returnlist in salelist: 117 # 遍历 118 print("已销售二维码:",returnlist) 119 # 打印 120 img = qrcode.make(returnlist) 121 # t = time.strftime('%Y-%m-%d %H_%M_%S', time.localtime()) 122 Deposit_Test.num = Deposit_Test.num + 1 123 img.save(str(Deposit_Test.num)+".jpg") 124 self.driver.find_element_by_xpath("/html/body/div[1]/div/div[2]/div/div[2]/div[2]/div[1]/input").send_keys(returnlist) 125 # 把已销售二维码输入输入框 126 self.driver.find_element_by_xpath("/html/body/div[1]/div/div[2]/div/div[2]/div[2]/div[1]/input").send_keys(Keys.ENTER) 127 time.sleep(1) 128 self.driver.find_element_by_class_name("btnDefault").click() 129 # 点击退押金 130 time.sleep(1) 131 returned2 = self.driver.find_element_by_xpath("/html/body/div[1]/div/div[3]/div[2]/span").text[0:-4] 132 returned2 = int(returned2) 133 print("退押金后退回押金总额",returned2) 134 returned3 = returned1 + int(count*10) 135 print(returned3) 136 if int(returned2) == returned3: 137 print("退还押金成功,已销售农药退押金成功个数:",count*10) 138 else: 139 print("退还押金失败") 140 141 142 143 144 if __name__ == '__main__': 145 unittest.main() 146 147 # testunit = unittest.TestSuite() 148 # # 制定一个容器,生成 test_001的测试报告 149 # testunit.addTest(Deposit_Test("test_001")) 150 # filename = "C:\Users\jiaow\PycharmProjects\nongzi\Test_reports\report_Tuiyajin.html" 151 # fp = open(filename, "wb") 152 # runner = HTMLTestRunner.HTMLTestRunner( 153 # stream=fp, 154 # title="农药押金收退终端测试报告", 155 # description="用例执行情况:" ) 156 # 157 # runner.run(testunit) 158 # fp.close() 159 160 161 162 163