• selenium_编写测试


    unittest

    # 最初,导入所需的所有基本模块。该单元测试模块是内置Python基于Java的JUnit。该模块提供了组织测试用例的框架。
    #该selenium.webdriver模块提供了所有的webdriver实现。目前支持的WebDriver实现是Firefox,Chrome,Ie和Remote。该键类提供键在键盘像RETURN,F1,ALT等。
    import unittest
    from selenium import webdriver
    import time
    from selenium.webdriver.common.keys import Keys
    #测试用例类继承自unittest.TestCase。继承TestCase类是告诉unittest模块这是一个测试用例的方法:
    # baiduorgsearch 是个名 可以变
    class Baiduorgsearch(unittest.TestCase):
    #   开始 该的setUp是初始化的一部分,此方法将你要在这个测试用例类写的每一个测试函数之前被调用。在这里,您将创建Chrome WebDriver的实例。
        def setUp(self):
            self.driver = webdriver.Chrome()
      # 这是测试用例方法。测试用例方法应始终以字符测试开始。此方法中的第一行创建对setUp方法中创建的驱动程序对象的本地引用。
        def test_baidu_search(self):
            d = self.driver
            d.get('https://www.baidu.com')
            d.find_element_by_css_selector('#kw').send_keys('hello world')
            time.sleep(3)
            # 点回车键
            d.find_element_by_xpath('//*[@id="su"]').send_keys(Keys.ENTER)
            time.sleep(5)
    #  结束
        def tearDown(self):
            self.driver.quit()
    
    # 规定unittest 按规定执行 最后一行是运行测试套件的一些样板代码
    if __name__ == "__main__":
        unittest.main()

      

    # 百度上传一个图片
    from selenium import webdriver
    d = webdriver.Chrome()
    d.clear()
    d.get('https://www.baidu.com')
    
    
    # 定位到照片上传 并点击
    d.find_element_by_css_selector('span[class="soutu-btn"]').click()
    # 定位到上传地址 并给出值 d.find_element_by_css_selector(
    'input[type="file"]').send_keys('C:\Users\HP-NB\Downloads\IMG_0060.JPG') # windos 下 文件位置用 \ 隔开
    # 注册一个账号 并截图最后结果
    import unittest
    from selenium import webdriver
    import time
    from selenium.webdriver.common.keys import Keys
    
    url = 'http://39.107.96.138:3000/'
    
    class node(unittest.TestCase):
    
        def setUp(self):
    
            self.url = 'http://39.107.96.138:3000/'
            self.driver = webdriver.Chrome()
            self.driver.get(self.url)
    # test 是固定的,test_的执行顺序 是按test_后面的字母或数字排序执行的
        def test_0register(self):
            driver = self.driver
            driver.find_element_by_css_selector('a[href="/signup"]').click()
            driver.find_element_by_id('loginname').send_keys('xiaomihehe')
            driver.find_element_by_id('pass').send_keys('123456')
            driver.find_element_by_id('re_pass').send_keys('123456')
            driver.find_element_by_id('email').send_keys('123456@qq.com')
            driver.find_element_by_css_selector('input[type="submit"]').click()
            time.sleep(5)
    
    
    
    
    
        def tearDown(self):
                # 对页面指定的元素截图,并实时用时间定义截图的名字 防止覆盖,引用time函数的格式化日期
                picture_time = time.strftime("%Y-%m-%d-%H_%M_%S", time.localtime(time.time()))
                # 打印出来
                print(picture_time)
                # 让它全屏
                self.driver.maximize_window()
                # windows 下路径用双斜杠,有一个是转义符
                picture_url = self.driver.save_screenshot('C:\Users\HP-NB\Desktop\' + picture_time + '.png')  # 每次运行都是01的图片,能不能让它每次运行知道运行那个
                # 打印出来
                print("%s: 已经截图" % picture_url)
                self.driver.quit()
    
    
    if __name__ == '__main__':
         unittest.main()
    # 做一个 登录 发帖 没有优化
    import unittest
    from selenium import webdriver
    import time
    from selenium.webdriver.common.keys import Keys
    # 引入 动作链 ActionChains实现ActionChains是一种自动执行低级别交互的方法,例如鼠标移动,鼠标按钮操作,按键和上下文菜单交互。
    # 这对于执行更复杂的操作非常有用,例如悬停和拖放。生成用户操作。
    # 在ActionChains对象上调用操作方法时,操作将存储在ActionChains对象的队列中。当您调用perform()时,事件将按它们排队的顺序触发。
    from selenium.webdriver.common.action_chains import ActionChains
    
    
    class cnode(unittest.TestCase):
    
    
        def setUp(self):
            self.driver = webdriver.Chrome()
            self.driver.get('http://39.107.96.138:3000/')
    
    
        def test_login_post(self):
            self.driver.find_element_by_css_selector('a[href="/signin"]').click()
            self.driver.find_element_by_id('name').send_keys('user0')
            self.driver.find_element_by_id('pass').send_keys('123456')
            self.driver.find_element_by_css_selector('input[type="submit"]').click()
            self.driver.find_element_by_css_selector("#create_topic_btn > span").click()
            self.driver.find_element_by_id('tab-value').click()
            self.driver.find_element_by_css_selector('#tab-value > option:nth-child(2)').click()
            self.driver.find_element_by_id('title').send_keys("selenium lalal")
            
            # 赋个变量
            niunai = self.driver.find_element_by_class_name('CodeMirror-scroll')
            # 必须在这里点击,在上面不行
            niunai.click()
            # 官方使用方式
            ActionChains(self.driver).move_to_element(niunai).send_keys("土豆土豆 地瓜在哪里?").perform()
    
    
    
        def tearDown(self):
            time.sleep(5)
            self.driver.quit()
    
    
    if __name__ == '__main__':
        unittest.main()
  • 相关阅读:
    Python基础篇【第十一篇】:正则表达式之计算器
    Python基础篇【第十篇】:正则表达式
    Python基础篇【第九篇】:剖析装饰器
    Python基础篇【第八篇】:剖析递归函数
    Python基础篇【第七篇】:文件操作
    Python基础篇【第六篇】:函数补充
    Python基础篇【第五篇】:sed和函数
    TCP/IP详解之:Ping程序、Traceroute程序
    TCP/IP详解之:ICMP协议
    TCP/IP详解之:ARP协议 和 RARP协议
  • 原文地址:https://www.cnblogs.com/niunai/p/10250686.html
Copyright © 2020-2023  润新知