PO模型代码
from time import sleep
from selenium.webdriver.common.by import By
class BasePage:
def __init__(self,driver=None,baseurl=None):
self.driver=driver
self.baseurl=baseurl
self.open_page()
def open_page(self):
self.driver.maximize_window()
self.driver.implicitly_wait(10)
self.driver.get(self.baseurl)
# 完整后自动截图,自定义路径,下同
self.driver.get_screenshot_as_file()
sleep(3)
def close_page(self):
self.driver.get_screenshot_as_file()
return self.driver.close()
def quit_driver(self):
self.driver.get_screenshot_as_file()
return self.driver.quit()
def find_element(self,by,element):
sleep(1)
return self.driver.find_element(by,element)
def find_elements(self,by,element):
sleep(1)
return self.driver.find_elements(by,element)
def switch_alert(self):
sleep(1)
return self.driver.switch_to.alert
class LoginPage(BasePage):
def username(self):
return self.find_element(By.ID, 'username')
def password(self):
return self.find_element(By.ID, 'password')
def submit(self):
return self.find_element(By.ID, 'submit')
def login(self, username, password):
self.username().send_keys(username)
self.password().send_keys(password)
# 完整后自动截图,自定义路径
self.driver.get_screenshot_as_file()
self.submit().click()
class RegisterPage(BasePage):
def username(self):
return self.find_element(By.ID,'username')
def nickname(self):
return self.find_element(By.ID, 'nickname')
def password(self):
return self.find_element(By.ID, 'password')
def confirm_password(self):
return self.find_element(By.ID, 'confirm_password')
def checkcode(self):
return self.find_element(By.ID, 'checkcode')
def submit(self):
return self.find_element(By.ID, 'submit')
def register(self,username,nickname,password,checkcode):
self.username().send_keys(username)
self.nickname().send_keys(nickname)
self.password().send_keys(password)
self.confirm_password().send_keys(password)
self.checkcode().send_keys(checkcode)
self.driver.get_screenshot_as_file()
self.submit().click()
class ArticlePage(BasePage):
def title(self):
return self.find_element(By.ID,'title')
def shortcut(self):
return self.find_element(By.ID, 'shortcut')
def content(self):
return self.find_element(By.CLASS_NAME, 'cke_editable')
def source(self):
return self.find_element(By.ID, 'source')
def link(self):
return self.find_element(By.ID, 'link')
def imglink(self):
return self.find_element(By.ID, 'imglink')
def date(self):
return self.find_element(By.ID, 'date')
def submit(self):
return self.find_element(By.ID, 'submit')
def linking(self,link_text):
return self.find_element(By.LINK_TEXT,link_text)
def article(self,title,shortcut,content,source,link,imglink,date,returnurl):
self.driver.implicitly_wait(20)
self.title().send_keys(title)
self.shortcut().send_keys(shortcut)
self.driver.switch_to.frame(0)
self.content().send_keys(content)
self.driver.switch_to.default_content()
self.source().send_keys(source)
self.link().send_keys(link)
self.imglink().send_keys(imglink)
self.date().send_keys(date)
self.driver.get_screenshot_as_file()
self.submit().click()
self.driver.implicitly_wait(10)
self.driver.get(returnurl)
self.driver.implicitly_wait(10)
sleep(1)
self.driver.get_screenshot_as_file()
sleep(2)
self.linking(title).click()
self.driver.get_screenshot_as_file()
self.driver.implicitly_wait(10)
sleep(2)
unitest测试用例代码
import unittest
from selenium import webdriver
from tasks.selenium_coconutmilk.pages.PageObjection import LoginPage, RegisterPage, ArticlePage
from tasks.selenium_coconutmilk.config.readConfig import Config
from tasks.selenium_coconutmilk.data.read_data import ReadData
config = Config()
# 测试中应使用正确的文件路径
# 可定义为path从文件读取
basedata = config.read_json(r"G:\***\basedata.json")
readdata=ReadData()
urls=readdata.read_json(r"G:\***\urls.json")
Article=readdata.read_json(r"G:\***\article.json")
Login=readdata.read_json(r"G:\***\login.json")
Register=readdata.read_json(r"G:\***\register.json")
driver=webdriver.Chrome()
class TestRegister(unittest.TestCase):
def test_register(self):
self.register = RegisterPage(driver, urls['registerurl'])
self.register.register(Register['username'],Register['nickname'],Register['password'],Register['checkcode'])
class TestLogin(unittest.TestCase):
def test_login(self):
self.login=LoginPage(driver,urls['loginurl'])
self.login.login(Login['username'],Login['password'])
class TestArticle(unittest.TestCase):
def test_article(self):
self.article=ArticlePage(driver,urls['editurl'])
self.article.article(Article['title'],
Article['shortcut'],
Article['content'],
Article['source'],
Article['link'],
Article['imglink'],
Article['date'],
Article['returnurl'])
if __name__ == '__main__':
unittest.main()