zoukankan      html  css  js  c++  java
  • selenium 自动化测试。

    第一步安装 谷歌浏览器。

    第二步下载,chromedriver

    第三步编写测试测试脚本

    第四步 安装selemium

    第五步下载HTML Testrunner.py

    第六步下载chromedriver

    # -*- coding: utf-8 -*-
    #引入webdriver和unittest所需要的包
    from selenium import webdriver
    from selenium.webdriver.common.by import By
    from selenium.webdriver.common.keys import Keys
    from selenium.webdriver.support.ui import Select
    from selenium.common.exceptions import NoSuchElementException
    from selenium.common.exceptions import NoAlertPresentException
    import unittest, time, re
    
    #引入HTMLTestRunner包
    import HTMLTestRunner  
    
    class email(unittest.TestCase):
        #初始化设置
        def setUp(self):
            self.driver = webdriver.Chrome()
            self.driver.implicitly_wait(30)
            self.base_url = "https://mail.qq.com/cgi-bin/loginpage"
            self.verificationErrors = []
            self.accept_next_alert = True
            self.username = "1754894793"
            self.password = "xusongwei1208"
            self.sender = "16558744"
            self.title = u"陈老师"
            self.content = u"祝你快乐,年轻。"
    
        #登录
        def login(self):
            driver = self.driver
            driver.get(self.base_url)
            # 录制工具对frame跳转代码不灵光
            
    
            # 可以在一个智能范围内等待
            driver.implicitly_wait(30) 
            driver.switch_to.frame("login_frame")  # 切换到有登录账号输入框的 frame
            driver.find_element_by_id("u").click()
            driver.find_element_by_id("u").clear()
            driver.find_element_by_id("u").send_keys(self.username)
            driver.find_element_by_id("p").click()
            driver.find_element_by_id("p").clear()
            driver.find_element_by_id("p").send_keys(self.password)
            driver.find_element_by_id("login_button").click()
            # driver中当前frame返回顶层
            driver.switch_to.default_content()
    
       
            driver.switch_to.default_content()
            driver.find_element_by_id("composebtn").click()
    
            driver.switch_to.frame("mainFrame")
            # 输入接收者的邮箱和邮件标题
            #绝对路径定位元素的位置
            driver.find_element_by_xpath("//div[@id='toAreaCtrl']/div[2]/input").send_keys(self.sender)        
            driver.find_element_by_id("subject").send_keys(self.title)
            
            # 进入输入内容的iframe
            frame = driver.find_element_by_xpath("//iframe[@class='qmEditorIfrmEditArea']")
            driver.switch_to.frame(frame)
    
            # 输入邮件内容:
            # 问题出在 他把文本放在div标签中间了
            # 解决:你往父级找一找  有没有div元素 有一个  contenteditable="true"的属性,说明这个文本框采用的是全局变量,你只需要给这个div  send_keys()就ok了
            driver.find_element_by_xpath("//body").send_keys(self.content)
            
            # 从底层的frame返回上一层的frame需要先回到顶层,再往下走找到它
            driver.switch_to.default_content()
            driver.switch_to.frame("mainFrame")
            driver.find_element_by_xpath(u"(.//*[normalize-space(text()) and normalize-space(.)='对邮件加密'])[1]/following::a[1]").click()
    
            # 进入frame操作结束后就返回顶层
            driver.switch_to.default_content()
        # def exit(self):
        #     driver = self.driver
            driver.find_element_by_link_text(u"退出").click()
            driver.implicitly_wait(10)
            driver.find_element_by_link_text(u"重新登录").click()
        # def run(self):
        #     self.login()
        #     self.sendmail()
        #     self.exit()  
        def tearDown(self):
            # 退出驱动 关闭所有窗口。
            self.driver.quit()
    
            self.assertEqual([], self.verificationErrors)
    
    if __name__ == "__main__":
        #定义一个测试容器
        test = unittest.TestSuite()
    
        #将测试用例,加入到测试容器中
        test.addTest(email("login"))
    
        #定义个报告存放的路径,支持相对路径
        file_path = "C:\Users\小号\Desktop\result.html"
        file_result= open(file_path, 'wb')
    
        #定义测试报告
        runner = HTMLTestRunner.HTMLTestRunner(stream = file_result, title = u"qq邮箱登录发信息,退出", description = u"用例执行情况")
    
        #运行测试用例
        runner.run(test)
        file_result.close()

    测试报告

  • 相关阅读:
    AspNetCore打造一个“最安全”的api接口
    efcore分表分库原理解析
    对于经常接触的分页你确定你真的会吗
    Monitor的扩展支持string的超时锁
    Excel导出
    搭建私有Git服务器-GitLab
    C# 爬取网易Buff进行购买
    .Net Core 使用弹性和瞬态故障处理库Polly
    JS Table表格添加多选框
    JS 用户头像展示
  • 原文地址:https://www.cnblogs.com/1208xu/p/12081145.html
Copyright © 2011-2022 走看看