zoukankan      html  css  js  c++  java
  • 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)
  • 相关阅读:
    [note]抽象类和接口的相同点和不同点
    百度竞价门再跟踪:违规医疗广告数量仍大幅增加
    获取拼音的第一个字母的方法
    一个分页存储过程
    正则表达式(Regular Expressions)
    四个故事
    Oracle 常用
    我很喜欢的一个[帖子]:从现在起,我开始还债。
    DataGrid 中的 HyperLinkColumn (可以携带多个Get参数)
    100 statements in English.
  • 原文地址:https://www.cnblogs.com/taidou/p/8439379.html
Copyright © 2011-2022 走看看