import datetime
import os
import sys
from os.path import dirname
import requests
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from webdriver_manager.chrome import ChromeDriverManager
#创建驱动对象
class Driver:
driver=""
def __init__(self):
options=webdriver.ChromeOptions()
self.driver=webdriver.Chrome(service=Service(ChromeDriverManager().install()),options=options)
self.driver.implicitly_wait(2)
requests.packages.urllib3.disable_warnings()
self.driver.maximize_window()
def getScreeShot(self):
dirname=datetime.datetime.now().strftime("%Y-%m-%d")
if not os.path.exists("../images/"+dirname):
os.mkdir("../images/"+dirname)
filename=sys._getframe().f_back.f_code.co_name+"-"+datetime.datetime.now().strftime("%Y-%m-%d-%H%M%S")+".png"
self.driver.save_screenshot("../images/"+dirname+"/"+filename)
ExamDriver=Driver()
import time
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.wait import WebDriverWait
from Common.Utils import ExamDriver
class ExamExercise:
url=""
driver=""
def __init__(self):
self.url="http://49.235.61.184:8080/exercise"
self.driver=ExamDriver.driver
if self.driver.current_url != self.url:
self.driver.get(self.url)
self.wait = WebDriverWait(self.driver, 10)
#遍历我的练习页功能
def ExamExerciseList(self):
#点击我的练习
self.driver.find_element(By.XPATH,"//div[contains(@class, 'ant-tabs-tab') and contains(., '我的练习')]/span").click()
#进行查询
self.driver.find_element(By.CSS_SELECTOR,"#sk-layout > div > div > section > div > main > div > div.ant-pro-grid-content > div > div > div.ant-pro-table > div.ant-pro-card.ant-pro-table-search.ant-pro-table-search-query-filter > form > div > div:nth-child(2) > div > div > div.ant-col.ant-form-item-control > div > div > div > div > div > div:nth-child(2) > button").click()
self.driver.find_element(By.CSS_SELECTOR,"#sk-layout > div > div > section > div > main > div > div.ant-pro-grid-content > div > div > div.ant-pro-table > div.ant-pro-card.ant-pro-table-search.ant-pro-table-search-query-filter > form > div > div:nth-child(2) > div > div > div.ant-col.ant-form-item-control > div > div > div > div > div > div:nth-child(2) > button").click()
self.driver.find_element(By.CSS_SELECTOR,"#sk-layout > div > div > section > div > main > div > div.ant-pro-grid-content > div > div > div.ant-pro-table > div.ant-pro-card.ant-pro-table-search.ant-pro-table-search-query-filter > form > div > div:nth-child(2) > div > div > div.ant-col.ant-form-item-control > div > div > div > div > div > div:nth-child(1) > button").click()
ExamDriver.getScreeShot()
self.driver.find_element(By.XPATH,"//*[@id='sk-layout']//table//tr[6]//a[text()='继续答题']").click()
ExamDriver.getScreeShot()
# self.driver.find_element(By.XPATH,"//span[text()='查看答案']").click()
self.driver.find_element(By.XPATH,"//button[normalize-space()='下一页']").click()
self.driver.find_element(By.XPATH,"//button[normalize-space()='结束练习']").click()
self.driver.find_element(By.XPATH,"//*[@id='sk-layout']//table//tr[1]//a[text()='二维码']").click()
self.driver.find_element(By.XPATH,"//*[@id='sk-layout']//table//tr[1]//a[text()='删除']").click()
ExamDriver.getScreeShot()
self.wait.until(EC.visibility_of_element_located(
(By.XPATH, "//button[normalize-space()='Cancel']")
))
# self.driver.find_element(By.XPATH,"//button[normalize-space()='OK']").click()
self.driver.find_element(By.XPATH,"//button[normalize-space()='Cancel']").click()
import time
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.wait import WebDriverWait
from Common.Utils import ExamDriver
class ExamRepoIndex:
url=""
driver=""
def __init__(self):
self.url="http://49.235.61.184:8080/repo/index"
self.driver=ExamDriver.driver
if self.driver.current_url != self.url:
self.driver.get(self.url)
self.wait = WebDriverWait(self.driver, 10)
def RepoIndexList(self):
self.driver.find_element(By.XPATH,"//*[@id='name']").send_keys("自动化")
self.driver.find_element(By.XPATH,"//*[@id='sk-layout']//form//div[2]/button").click()
ExamDriver.getScreeShot()
self.wait.until(EC.visibility_of_element_located((By.XPATH,"//a[contains(text(), '文本导入')]")))
#文本导入
self.driver.find_element(By.XPATH,"//a[contains(text(), '文本导入')]").click()
self.driver.find_element(By.XPATH,"/html/body/div/div/div/div/div/div/div/div[1]/div/div/div[6]").send_keys("感谢您能抽出几分钟时间来参加本次答题,现在我们就马上开始吧!【欢迎语】")
ExamDriver.getScreeShot()
self.driver.find_element(By.XPATH,"/html/body//div[2]/div/div[2]/button").click()
#试题管理
self.driver.find_element(By.XPATH,"//a[contains(text(), '试题管理')]").click()
ExamDriver.getScreeShot()
self.driver.find_element(By.XPATH,"/html/body/div//div[2]/div/div/button").click()
self.driver.find_element(By.CSS_SELECTOR,"#sk-layout > div > div > section > div.ant-pro-layout-container > main > div > div.ant-pro-grid-content > div > div > div > div:nth-child(2) > div > div.ant-pro-table-list-toolbar > div > div.ant-space.ant-space-horizontal.ant-space-align-center.ant-pro-table-list-toolbar-right > div:nth-child(2) > div > div:nth-child(2)").click()
self.wait.until(EC.visibility_of_element_located((By.CSS_SELECTOR,"div.ant-dropdown ul > li:nth-child(1)")))
self.driver.find_element(By.CSS_SELECTOR,"div.ant-dropdown ul > li:nth-child(1)").click()
self.driver.find_element(By.CSS_SELECTOR,"#sk-layout > div > div > section > div.ant-pro-layout-container > main > div > div.ant-pro-grid-content > div > div > div > div:nth-child(2) > div > div.ant-pro-table-list-toolbar > div > div.ant-space.ant-space-horizontal.ant-space-align-center.ant-pro-table-list-toolbar-right > div:nth-child(2) > div > div:nth-child(2)").click()
self.wait.until(EC.visibility_of_element_located((By.CSS_SELECTOR,"div.ant-dropdown ul > li:nth-child(2)")))
self.driver.find_element(By.CSS_SELECTOR,"div.ant-dropdown ul > li:nth-child(2)").click()
self.driver.find_element(By.CSS_SELECTOR,"#sk-layout > div > div > section > div.ant-pro-layout-container > main > div > div.ant-pro-grid-content > div > div > div > div:nth-child(2) > div > div.ant-pro-table-list-toolbar > div > div.ant-space.ant-space-horizontal.ant-space-align-center.ant-pro-table-list-toolbar-right > div:nth-child(2) > div > div:nth-child(2)").click()
self.wait.until(EC.visibility_of_element_located((By.CSS_SELECTOR,"div.ant-dropdown ul > li:nth-child(3)")))
self.driver.find_element(By.CSS_SELECTOR,"div.ant-dropdown ul > li:nth-child(3)").click()
self.driver.find_element(By.XPATH,"//*[@id='sk-layout']//section/div[2]/main/div/div[2]//div[2]/div/div[3]").click()
time.sleep(2)
#self.wait.until(EC.visibility_of_element_located((By.CSS_SELECTOR,"div > div > div > div.ant-popover-inner > div.ant-popover-title > div > label > span.ant-checkbox.ant-checkbox-checked > input")))
#列设置
self.driver.find_element(By.CSS_SELECTOR,"div > div > div > div.ant-popover-inner > div.ant-popover-title > div > label > span.ant-checkbox.ant-checkbox-checked > input").click()
ExamDriver.getScreeShot()
self.driver.find_element(By.CSS_SELECTOR,"div > div > div > div.ant-popover-inner > div.ant-popover-inner-content > div > div > div.ant-tree-list > div > div > div > div:nth-child(1) > span.ant-tree-checkbox").click()
self.driver.find_element(By.CSS_SELECTOR,"div > div > div > div.ant-popover-inner > div.ant-popover-inner-content > div > div > div.ant-tree-list > div > div > div > div:nth-child(2) > span.ant-tree-checkbox").click()
self.driver.find_element(By.CSS_SELECTOR,"div > div > div > div.ant-popover-inner > div.ant-popover-inner-content > div > div > div.ant-tree-list > div > div > div > div:nth-child(3) > span.ant-tree-checkbox").click()
self.driver.find_element(By.CSS_SELECTOR,"div > div > div > div.ant-popover-inner > div.ant-popover-inner-content > div > div > div.ant-tree-list > div > div > div > div:nth-child(4) > span.ant-tree-checkbox").click()
self.driver.find_element(By.CSS_SELECTOR,"div > div > div > div.ant-popover-inner > div.ant-popover-inner-content > div > div > div.ant-tree-list > div > div > div > div:nth-child(5) > span.ant-tree-checkbox").click()
self.driver.find_element(By.CSS_SELECTOR,"div > div > div > div.ant-popover-inner > div.ant-popover-inner-content > div > div > div.ant-tree-list > div > div > div > div:nth-child(6) > span.ant-tree-checkbox").click()
self.driver.find_element(By.CSS_SELECTOR,"div > div > div > div.ant-popover-inner > div.ant-popover-inner-content > div > div > div.ant-tree-list > div > div > div > div:nth-child(7) > span.ant-tree-checkbox").click()
self.driver.find_element(By.CSS_SELECTOR,"div > div > div > div.ant-popover-inner > div.ant-popover-inner-content > div > div > div.ant-tree-list > div > div > div > div:nth-child(8) > span.ant-tree-checkbox").click()
self.driver.find_element(By.CSS_SELECTOR,"div > div > div > div.ant-popover-inner > div.ant-popover-inner-content > div > div > div.ant-tree-list > div > div > div > div:nth-child(9) > span.ant-tree-checkbox").click()
ExamDriver.getScreeShot()
#新建题库
self.driver.find_element(By.XPATH,"//*[text()='新建']").click()
self.driver.find_element(By.XPATH,"/html/body/div//div[3]/div/div/div[1]/button").click()
import time
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.wait import WebDriverWait
from Common.Utils import ExamDriver
from tests.ExaRepoIndex import ExamRepoIndex
#问题管理页
class ExamRepoTemplate:
url=""
driver=""
def __init__(self):
self.url="http://49.235.61.184:8080/repo/template"
self.driver=ExamDriver.driver
if self.driver.current_url != self.url:
self.driver.get(self.url)
self.wait = WebDriverWait(self.driver, 10)
def RepoTemplateList(self):
self.driver.find_element(By.XPATH,"//*[@id='sk-layout']/div/div/section/div[2]/main/div/div[2]/div/div/div/div[1]/form//div[1]/div/div[2]/button").click()
self.driver.find_element(By.XPATH,"//tr[2]//a[text()='编辑']").click()
ExamDriver.getScreeShot()
self.driver.find_element(By.CSS_SELECTOR,"#editorContent > div > div").click()
# self.driver.find_element(By.CSS_SELECTOR,"#editorContent > div > div > div > div > div > div > div > div.q-content > div > div > div > div > div > div:nth-child(2) > input").send_keys("自动化测试")
ExamDriver.getScreeShot()
self.driver.find_element(By.CSS_SELECTOR,"#editor > div.survey-main-panel > div.survey-main-panel-toolbar > div:nth-child(2) > div > button:nth-child(5)").click()
import time
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.select import Select
from selenium.webdriver.support.wait import WebDriverWait
from Common.Utils import ExamDriver
class ExamSyatemUser:
url=""
driver=""
def __init__(self):
self.url="http://49.235.61.184:8080/system/user"
self.driver=ExamDriver.driver
if self.driver.current_url != self.url:
self.driver.get(self.url)
self.wait = WebDriverWait(self.driver, 10)
def SystemUser(self):
self.driver.find_element(By.CSS_SELECTOR,"#name").send_keys("zhz")
self.driver.find_element(By.CSS_SELECTOR,"#sk-layout > div > div > section > div.ant-pro-layout-container > main > div > div.ant-pro-grid-content > div > div > div > div.ant-col.ant-col-xs-24.ant-col-md-18 > div > div.ant-pro-card.ant-pro-table-search.ant-pro-table-search-query-filter > form > div > div:nth-child(2) > div > div > div.ant-col.ant-form-item-control > div > div > div > div > div > div:nth-child(2) > button").click()
self.wait.until(EC.visibility_of_element_located(
(By.XPATH, "//tr[contains(@class, 'ant-table-row')][1]//*[text()='编辑']")
))
self.driver.find_element(By.XPATH,"//tr[contains(@class, 'ant-table-row')][1]//*[text()='编辑']").click()
ExamDriver.getScreeShot()
self.driver.find_element(By.CSS_SELECTOR,"body > div:nth-child(8) > div > div.ant-drawer-content-wrapper > div > div > div.ant-drawer-footer > div > div > div:nth-child(2) > button").click()
self.driver.find_element(By.XPATH,"//button[span[text()='新建']]").click()
self.driver.find_elements(By.CSS_SELECTOR,"#name")[1].send_keys("test002")
self.driver.find_element(By.CSS_SELECTOR,"#username").send_keys("test002")
self.driver.find_element(By.CSS_SELECTOR,"#password").send_keys("123456")
self.driver.find_element(By.CSS_SELECTOR,"#rePassword").send_keys("123456")
# 触发下拉框
gender_input = self.driver.find_element(By.ID, "gender")
# 尝试点击输入框
gender_input.click()
# 等待直到选项元素可见
option1 = self.wait.until(EC.visibility_of_element_located(
(By.XPATH, "//div[contains(@class,'ant-select-item-option') and text()='男']")
))
option1.click()
# 触发下拉框
gender_input = self.driver.find_element(By.ID, "status")
# 尝试点击输入框
gender_input.click()
# 等待直到选项元素可见
option2 = self.wait.until(EC.visibility_of_element_located(
(By.XPATH, "//div[contains(@class,'ant-select-item-option') and text()='激活']")
))
option2.click()
ExamDriver.getScreeShot()
# time.sleep(5)
self.driver.find_element(By.CSS_SELECTOR,"body > div:nth-child(8) > div > div.ant-drawer-content-wrapper > div > div > div.ant-drawer-footer > div > div > div:nth-child(2) > button").click()
import time
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.select import Select
from selenium.webdriver.support.wait import WebDriverWait
from Common.Utils import ExamDriver
class ExamSyatemRole:
url=""
driver=""
def __init__(self):
self.url="http://49.235.61.184:8080/system/role"
self.driver=ExamDriver.driver
if self.driver.current_url != self.url:
self.driver.get(self.url)
self.wait = WebDriverWait(self.driver, 10)
def SystemRole(self):
self.driver.find_element(By.CSS_SELECTOR,"#name").send_keys("yonghu")
self.driver.find_element(By.CSS_SELECTOR,"#sk-layout > div > div > section > div.ant-pro-layout-container > main > div > div.ant-pro-grid-content > div > div > div > div.ant-pro-card.ant-pro-table-search.ant-pro-table-search-query-filter > form > div > div.ant-col.ant-col-8.ant-col-offset-8 > div > div > div.ant-col.ant-form-item-control > div > div > div > div > div > div:nth-child(2) > button").click()
ExamDriver.getScreeShot()
self.wait.until(EC.visibility_of_element_located(
(By.XPATH, "//tr[contains(@class, 'ant-table-row')][1]//*[text()='编辑']")
))
time.sleep(1)
self.driver.find_element(By.XPATH,"//tr[contains(@class, 'ant-table-row')][1]//*[text()='编辑']").click()
code=self.driver.find_element(By.CSS_SELECTOR,"#code")
code.clear()
code.send_keys("1")
self.driver.find_element(By.XPATH,"/html/body//div[2]/form/div[3]/div/div/div/div/div[2]/div/div/ul/li[6]/span[2]/span").click()
self.driver.find_element(By.XPATH,"/html/body/div//div[3]/div/div/div[2]/button").click()
self.driver.find_element(By.XPATH,"//button[span[text()='新建']]").click()
#
self.driver.find_elements(By.CSS_SELECTOR,"#name")[1].send_keys("test")
self.driver.find_element(By.CSS_SELECTOR,"#code").send_keys("666")
# 触发下拉框
gender_input = self.driver.find_element(By.ID, "status")
# 尝试点击输入框
gender_input.click()
# 等待直到选项元素可见
option2 = self.wait.until(EC.visibility_of_element_located(
(By.XPATH, "//div[contains(@class,'ant-select-item-option') and text()='正常']")
))
option2.click()
ExamDriver.getScreeShot()
self.driver.find_element(By.CSS_SELECTOR, "#remark").send_keys("这是进行自动化测试的角色")
self.driver.find_element(By.XPATH,"/html/body/div//div[2]/form/div[3]/div/div/div/div/div[2]/div/div/ul/li[1]/span[2]/span").click()
self.driver.find_element(By.XPATH,"/html/body/div//div[2]/form/div[3]/div/div/div/div/div[2]/div/div/ul/li[2]/span[2]/span").click()
self.driver.find_element(By.XPATH,"/html/body/div//div[2]/form/div[3]/div/div/div/div/div[2]/div/div/ul/li[3]/span[2]/span").click()
self.driver.find_element(By.XPATH,"/html/body/div//div[2]/form/div[3]/div/div/div/div/div[2]/div/div/ul/li[4]/span[2]/span").click()
self.driver.find_element(By.XPATH,"/html/body/div//div[2]/form/div[3]/div/div/div/div/div[2]/div/div/ul/li[5]/span[2]/span").click()
self.driver.find_element(By.XPATH,"/html/body/div//div[2]/form/div[3]/div/div/div/div/div[2]/div/div/ul/li[6]/span[2]/span").click()
self.driver.find_element(By.XPATH,"/html/body/div//div[2]/form/div[3]/div/div/div/div/div[2]/div/div/ul/li[7]/span[2]/span").click()
self.driver.find_element(By.XPATH,"/html/body/div//div[2]/form/div[3]/div/div/div/div/div[2]/div/div/ul/li[8]/span[2]/span").click()
self.driver.find_element(By.XPATH,"/html/body//div[3]/div/div/div[2]/button").click()
self.driver.find_element(By.CSS_SELECTOR, "#name").send_keys("test")
ExamDriver.getScreeShot()
self.driver.find_element(By.CSS_SELECTOR,"#sk-layout > div > div > section > div.ant-pro-layout-container > main > div > div.ant-pro-grid-content > div > div > div > div.ant-pro-card.ant-pro-table-search.ant-pro-table-search-query-filter > form > div > div.ant-col.ant-col-8.ant-col-offset-8 > div > div > div.ant-col.ant-form-item-control > div > div > div > div > div > div:nth-child(2) > button").click()
import time
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.select import Select
from selenium.webdriver.support.wait import WebDriverWait
from Common.Utils import ExamDriver
class ExamSyatemDict:
url=""
driver=""
def __init__(self):
self.url="http://49.235.61.184:8080/system/dict"
self.driver=ExamDriver.driver
if self.driver.current_url != self.url:
self.driver.get(self.url)
self.wait = WebDriverWait(self.driver, 10)
def SystemPosition(self):
self.driver.find_element(By.XPATH, "//*[text()='新建']").click()
ExamDriver.getScreeShot()
self.driver.find_elements(By.CSS_SELECTOR, "#name")[1].send_keys("自动化字典测试")
Type = self.driver.find_element(By.CSS_SELECTOR, "#dictType")
Type.click()
first_option = self.wait.until(EC.element_to_be_clickable(
(By.XPATH, "//div[contains(@class, 'ant-select-item-option') and contains(., '问卷字典')][1]")
))
first_option.click()
self.driver.find_element(By.CSS_SELECTOR, "#code").send_keys("1234")
self.driver.find_element(By.CSS_SELECTOR, "#remark").send_keys("自动化测试新增字典")
ExamDriver.getScreeShot()
self.driver.find_element(By.XPATH, "/html/body/div[4]/div/div[3]/div/div/div[3]/div/div/div[2]/button").click()
self.driver.refresh()
self.driver.find_element(By.CSS_SELECTOR, "#name").send_keys("自动化字典测试")
self.driver.find_element(By.CSS_SELECTOR,"#sk-layout > div > div > section > div.ant-pro-layout-container > main > div > div.ant-pro-grid-content > div > div > div > div.ant-pro-card.ant-pro-table-search.ant-pro-table-search-query-filter > form > div > div:nth-child(2) > div > div > div.ant-col.ant-form-item-control > div > div > div > div > div > div:nth-child(2) > button").click()
ExamDriver.getScreeShot()