demotestpro

#models/driver.py
from selenium.webdriver import Remote
from selenium import webdriver

def browser():
    # driver=webdriver.Chrome()
    host='127.0.0.1:4444'   # 运行主机:端口号
    dc={'browserName':'chrome'}
    driver=Remote(command_executor='http://'+host+'./login',desired_capabilities=dc)
    return driver

if __name__=='__main__':
    dr=browser()
    dr.get('http://www.baidu.com')
    dr.quit()

#models/function.py
from selenium import webdriver
import os

def insert_img(driver,file_name):
    base_dir=os.path.dirname(os.path.dirname(__file__))
    base_dir=str(base_dir)
    base_dir=base_dir.replace('\\','/')
    base=base_dir.split('/test_case')[0]
    file_path=base+'/report/image/'+file_name
    driver.get_screenshot_as_file(file_path)

if __name__=='__main__':
    driver=webdriver.Chrome()
    driver.get("http://www.baidu.com")
    insert_img(driver,'default.jpg')
    driver.quit()

#models/myunit.py
from selenium import webdriver
from .driver import browser
import unittest
import os

class MyTest(unittest.TestCase):

    def setUp(self):
        self.driver=browser()
        self.driver.implicitly_wait(10)
        self.driver.maximize_window()

    def tearDown(self):
        self.driver.quit()

page_obj/base.py
class Page():
    '''

    '''
    demo_url='http://127.0.0.1:10000'

    def __init__(self,selenium_driver,base_url=demo_url,parent=None):
        self.base_url=base_url
        self.driver=selenium_driver
        self.timeout=30
        self.parent=parent

    def _open(self,url):
        url=self.base_url+url
        self.driver.get(url)
        assert self.on_page(),'Did not land on s%' % url

    def find_element(self,*loc):
        return self.driver.find_element(*loc)
    def find_elements(self,*loc):
        return self.driver.find_elements(*loc)

    def open(self):
        self._open(self.url)

    def on_page(self):
        return self.driver.current_url==(self.base_url+self.url)

    def script(self,src):
        return self.driver.execute_script(src)

#page_obj/loginPage.py
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.common.by import By
from .base import Page
from time import sleep

class login(Page):
    url='/'

    # Action
    demo_login_user_loc=(By.XPATH,"//div[@id='mzCust']/div/img")
    demo_login_button_loc=(By.ID,"mzLogin")

    def demo_login(self):
        self.find_element(*self.demo_login_user_loc).click()
        sleep(1)
        self.find_element(*self.demo_login_button_loc).click()

    login_username_loc=(By.ID,"usernameInput")
    login_password_loc=(By.ID,"passwordInput")
    login_button_loc=(By.CSS_SELECTOR,"button.btn.btn-flat.btn-primary.btn-block.btn-lg")

    def login_username(self,username):
        self.find_element(*self.login_username_loc).send_keys(username)

    def login_password(self,password):
        self.find_element(*self.login_password_loc).send_keys(password)

    def login_button(self):
        self.find_element(*self.login_button_loc).click()

    def user_login(self,username="bl7h",password="newegg@002"):
        self.open()
        #self.demo_login()
        self.login_username(username)
        self.login_password(password)
        self.login_button()
        sleep(1)

    user_error_hint_loc=(By.ID,"usernameInput-error")
    pawd_error_hint_loc=(By.ID,"passwordInput-error")
    user_login_error_loc=(By.ID,"loginError")

    def user_error_hint(self):
        return self.find_element(*self.user_error_hint_loc).text

    def pawd_error_hint(self):
        return self.find_element(*self.pawd_error_hint_loc).text

    def user_login_success(self):
        return self.find_element(*self.user_login_error_loc).text

#test_case/login_sta.py
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.common.by import By
from .base import Page
from time import sleep

class login(Page):
    url='/'

    # Action
    demo_login_user_loc=(By.XPATH,"//div[@id='mzCust']/div/img")
    demo_login_button_loc=(By.ID,"mzLogin")

    def demo_login(self):
        self.find_element(*self.demo_login_user_loc).click()
        sleep(1)
        self.find_element(*self.demo_login_button_loc).click()

    login_username_loc=(By.ID,"usernameInput")
    login_password_loc=(By.ID,"passwordInput")
    login_button_loc=(By.CSS_SELECTOR,"button.btn.btn-flat.btn-primary.btn-block.btn-lg")

    def login_username(self,username):
        self.find_element(*self.login_username_loc).send_keys(username)

    def login_password(self,password):
        self.find_element(*self.login_password_loc).send_keys(password)

    def login_button(self):
        self.find_element(*self.login_button_loc).click()

    def user_login(self,username="bl7h",password="newegg@002"):
        self.open()
        #self.demo_login()
        self.login_username(username)
        self.login_password(password)
        self.login_button()
        sleep(1)

    user_error_hint_loc=(By.ID,"usernameInput-error")
    pawd_error_hint_loc=(By.ID,"passwordInput-error")
    user_login_error_loc=(By.ID,"loginError")

    def user_error_hint(self):
        return self.find_element(*self.user_error_hint_loc).text

    def pawd_error_hint(self):
        return self.find_element(*self.pawd_error_hint_loc).text

    def user_login_success(self):
        return self.find_element(*self.user_login_error_loc).text

#esdotestpro/run_demo_test.py
from HTMLTestRunner import HTMLTestRunner
from email.mime.text import MIMEText
from email.header import Header
import smtplib
import unittest
import time
import os

def send_mail(file_new):
    f=open(file_new,'rb')
    mail_body=f.read()
    f.close()

    msg=MIMEText(mail_body,'html','utf-8')
    msg['Subject']=Header("自动化测试报告",'utf-8')

    smtp=smtplib.SMTP()
    smtp.connect("smtp.126.com")
    smtp.login("username@126.com","receive@126.com",msg.as_string())
    smtp.quit()
    print('email has send out!')

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

if __name__=='__main__':
    now=time.strftime("%Y-%m-%d %H_%M_%S")
    filename='./demo/report/'+now+'result.html'
    fp=open(filename,'wb')
    runner=HTMLTestRunner(stream=fp,title='***',description='')
    discover=unittest.defaultTestLoader.discover('./demo/test_base',pattern='*_sta.py')

    runner.run(discover)
    fp.close()
    file_path=new_report('./demo/report/')
    send_mail(file_path)

 

posted @ 2018-02-10 18:41  Bronc_Li  阅读(294)  评论(0编辑  收藏  举报