最近项目有一个需求:测试人员考勤数据分析结果,历史的手工测试方式是手动将每一种测试数据依次补加进考勤系统内,这种方式在很大程度上降低了测试的效率,以及数据补加的不准确性,所以,趁此机会,写了selenium脚本来替代手工测试。
实现功能如下:循环补加考勤数据,分别是签到设备、签到时间,签退设备、签退时间
步骤一:获取页面元素信息
from selenium.webdriver.common.by import By
class SubattendPage():
vagueStr=(By.ID,'vagueStr')
searchB=(By.ID,'searchB')
setReplenishRaw=(By.ID,'setReplenishRaw')
checkAll=(By.ID,'checkAll')
#签到、签退设备
singIn_choice=(By.XPATH,'//*[@id="form"]/div/div/div[1]/div/div/div/input')
singIn=(By.XPATH,'//*[@id="form"]/div/div/div[1]/div/div/dl/dd[4]')
singOut_choice=(By.XPATH,'//*[@id="form"]/div/div/div[3]/div/div/div/input')
singOut=(By.XPATH,'//*[@id="form"]/div/div/div[3]/div/div/dl/dd[4]')
inTimeDate=(By.ID,'inTimeDate')
outTimeDate=(By.ID,'outTimeDate')
save=(By.ID,'save')
close=(By.XPATH,'//*[@id="layui-layer1"]/span[1]/a')
def __init__(self, driver):
self.driver = driver
def set_vagueStr(self,name):
element_search = self.driver.find_element(*SubattendPage.vagueStr)
element_search.clear()
element_search.send_keys(name)
def click_search(self):
self.driver.find_element(*SubattendPage.searchB).click()
def click_checkAll(self):
element_checkAll= self.driver.find_element(*SubattendPage.checkAll)
element_checkAll.click()
def click_ReplenishRaw(self):
self.driver.find_element(*SubattendPage.setReplenishRaw).click()
def singIn_Choice(self):
self.driver.find_element(*SubattendPage.singIn_choice).click()
self.driver.find_element(*SubattendPage.singIn).click()
def set_inTimeDate(self,inTime):
element_inTimeDate=self.driver.find_element(*SubattendPage.inTimeDate)
element_inTimeDate.clear()
element_inTimeDate.send_keys(inTime)
def set_outTimeDate(self,outTime):
element_outTimeDate=self.driver.find_element(*SubattendPage.outTimeDate)
element_outTimeDate.click()
element_outTimeDate.send_keys(outTime)
def singOut_Choice(self):
self.driver.find_element(*SubattendPage.singOut_choice).click()
self.driver.find_element(*SubattendPage.singOut).click()
def click_save(self):
self.driver.find_element(*SubattendPage.save).click()
步骤二:补加考勤数据方法
from Automation.test_basepage.SubattendPage import SubattendPage
from selenium.common.exceptions import NoSuchElementException
import traceback
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
import time
class SubAttend_Method():
def __init__(self, driver):
self.driver = driver
def subattend(self,intime,outtime,iframe):
try:
# SubattendPage(self.driver).set_vagueStr(name)
# SubattendPage(self.driver).click_search()
# time.sleep(1)
# #全选按钮
# SubattendPage(self.driver).click_checkAll()
#补加按钮
SubattendPage(self.driver).click_ReplenishRaw()
self.driver.switch_to.frame(self.driver.find_element_by_id(iframe))
time.sleep(4)
js_inTimeDate = '$("input[readonly]").attr("readonly",null);'
self.driver.execute_script(js_inTimeDate)
# js_outTimeDate = '$("input[readonly]").attr("readonly",null);'
# self.driver.execute_script(js_outTimeDate)
if len(intime)!=0 and len(outtime)!=0:
SubattendPage(self.driver).set_inTimeDate(intime)
SubattendPage(self.driver).singIn_Choice()
SubattendPage(self.driver).set_outTimeDate(outtime)
SubattendPage(self.driver).singOut_Choice()
SubattendPage(self.driver).click_save()
if len(intime)==0 and len(outtime)!=0:
SubattendPage(self.driver).set_outTimeDate(outtime)
SubattendPage(self.driver).singOut_Choice()
SubattendPage(self.driver).click_save()
if len(intime)!=0 and len(outtime)==0:
SubattendPage(self.driver).set_inTimeDate(intime)
SubattendPage(self.driver).singIn_Choice()
SubattendPage(self.driver).click_save()
if len(intime)==0 and len(outtime)==0:
print('----------签到签退均为空------------')
self.driver.find_element(*SubattendPage.close).click()
except NoSuchElementException as e:
print(traceback.print_exc())
**
步骤三:运行补加考勤测试方法
import unittest
from selenium import webdriver
import time
import ddt
from Automation.test_module.subattend_method import SubAttend_Method
from Automation.test_basepage.LoginPage import LoginPage
from Automation.test_module.Execl import ExcelUtil
from selenium.common.exceptions import NoSuchElementException
data = ExcelUtil('E:\\pythonTest\\execl\\person.xlsx', 'Sheet1').dict_data()
@ddt.ddt
class Test_SubAttend(unittest.TestCase):
def setUp(self):
self.driver = webdriver.Firefox()
self.driver.implicitly_wait(10)
self.driver.maximize_window()
self.driver.get("http://192.168.10.104:8989")
LoginPage(self.driver).set_username('admin')
LoginPage(self.driver).set_password('123456')
LoginPage(self.driver).click_Login()
@ddt.data(*data)
def test_person(self,data):
self.driver.find_element_by_link_text('考勤管理').click()
self.driver.find_element_by_link_text('补加考勤').click()
self.driver.find_element_by_link_text('补加考勤').click()
time.sleep(3)
self.driver.switch_to.default_content()
self.driver.switch_to.frame(self.driver.find_element_by_xpath('/html/body/div/div[3]/div/div/div[2]/iframe'))
intime=data["inTime"]
outtime=data["outTime"]
SubAttend_Method(self.driver).subattend('采购',intime,outtime)
def tearDown(self):
self.driver.quit()
from Automation.test_basepage.LoginPage import LoginPage
from selenium import webdriver
from Automation.test_module.subattend_method import SubAttend_Method
import time
from Automation.test_module.Execl import ExcelUtil
from Automation.test_basepage.SubattendPage import SubattendPage
class main():
driver = webdriver.Firefox()
driver.implicitly_wait(10)
driver.maximize_window()
#driver.get("http://127.0.0.1:8989")
driver.get("http://127.0.0.1:8989")
LoginPage(driver).set_username('sw')
LoginPage(driver).set_password('111111')
LoginPage(driver).click_Login()
driver.find_element_by_link_text('考勤管理').click()
driver.find_element_by_link_text('补加考勤').click()
driver.find_element_by_link_text('补加考勤').click()
time.sleep(3)
driver.switch_to.default_content()
driver.switch_to.frame(driver.find_element_by_xpath('/html/body/div/div[3]/div/div/div[2]/iframe'))
SubattendPage(driver).set_vagueStr('神酒')
SubattendPage(driver).click_search()
# 全选按钮
#data=ExcelUtil('E:\\IRS\\testcase\\TestCase_SDB.xls','Sheet6')
data = ExcelUtil('E:\\IRS\\testcase\\TestCase_SDB.xls', 'Sheet3')
def subattend(self,shade):
time.sleep(1)
SubattendPage(self.driver).click_checkAll()
intime=main().data.dict_data()[i].get('inTime')
outtime=main().data.dict_data()[i].get('outTime')
iframe=main().data.dict_data()[i].get('iframe')
SubAttend_Method(self.driver).subattend(intime,outtime,iframe)
time.sleep(3)
self.driver.switch_to.default_content()
self.driver.switch_to.frame(self.driver.find_element_by_xpath('/html/body/div/div[3]/div/div/div[2]/iframe'))
# ele = self.driver.find_element_by_id(shade)
# self.driver.execute_script('arguments[0].click()', ele)
#self.driver.execute_script("document.getElementById('layui-layer-shade1').style.display='none'")
for i in range(len(main().data.dict_data())):
main().subattend(main().data.dict_data()[i].get('shade'))
欢迎留言,补充,本人资质尚浅,欢迎指正。