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)
  • 相关阅读:
    MySQL 8.0.14版本新功能详解
    Uncaught TypeError: Right-hand side of 'instanceof' is not an object
    程序员快速技术提升之道
    Windows 10 cmd命令符的使用
    数据千万条,备份第一条:VFEmail被擦除所有数据面临关停
    netty-socketio 示例代码
    idea中 在接口中如何直接跳转到该接口的是实现类中?
    perl DBD处理超时问题
    springboot 启动配置文件配置
    Office Word 发布文章到博客园
  • 原文地址:https://www.cnblogs.com/taidou/p/8439379.html
Copyright © 2011-2022 走看看