栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

Selenium3自动化测试实战(3)

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Selenium3自动化测试实战(3)

目录
  • 1. 调用Javascript
  • 2.处理HTML5视频播放
  • 3.滑动选择日期
  • 4.窗口截图
  • 5.认识单元测试
  • 6.断言方法
  • 7.判断某年是否为闰年
  • 8.测试用例的执行顺序
  • 9.跳过测试和预期失败
  • 10.Fixture
  • 11.执行多个测试文件
  • 12.编写Web自动化测试


1. 调用Javascript
from selenium import webdriver

driver = webdriver.Chrome()
driver.get("http://www.baidu.com")

driver.set_window_size(800,600)
driver.find_element_by_id("kw").send_keys("selenium")
driver.find_element_by_id("su").click()

#通过Javascript设置浏览器窗口的滚动条位置
js="window.scrollTo(100,450);"
driver.execute_script(js)
2.处理HTML5视频播放
from time import sleep
from selenium import webdriver

driver = webdriver.Chrome()
driver.get("http://videojs.com/")

video = driver.find_element_by_id("preview-player_html5_api")

# 返回播放文件地址
url=driver.execute_script("return arguments[0].currentSrc;",video)
print(url)

#播放视频
print("start")
driver.execute_script("arguments[0].play()",video)

#播放15秒
sleep(15)

#暂停视频
print("stop")
driver.execute_script("arguments[0].pause()",video)

driver.quit()
3.滑动选择日期
from time import sleep
from selenium import webdriver

driver = webdriver.Chrome()
driver.get("http://www.jq22.com/yanshi4976")
sleep(2)
driver.switch_to.frame("iframe")
driver.find_element_by_id("appDate").click()

#定位要滑动的年、月、日
dwwos = driver.find_element_by_class_name("dwwo")
year=dwwos[0]
month=dwwos[1]
day = dwwos[2]

action = webdriver.TouchActions(driver)
action.scroll_from_element(year,0,5).perform()
action.scroll_from_element(month,0,30).perform()
action.scroll_from_element(day,0,30).perform()
4.窗口截图
from selenium import webdriver

driver = webdriver.Chrome()
driver.get("http://www.baidu.com")

#截取当前窗口,指定截图图片的保存位置
driver.save_screenshot("./baidu_img.png")
5.认识单元测试
#创建Calculator类
import importlib
class Calculator:
    """用于完成两个数的加、减、乘、除"""
    def __init__(self,a,b):
        self.a = int(a)
        self.b = int(b)

    # 加法
    def add(self):
        return self.a + self.b

    # 减法
    def sub(self):
        return self.a - self.b

    #乘法
    def mul(self):
        return self.a * self.b

    # 除法
    def div(self):
        return self.a / self.b
        
#测试Calculator类V1版
from calculator import Calculator
import importlib

def test_add():
    c = Calculator(3,5)
    result = c.add()
    assert result == 8, '加法运算失败'

def test_sub():
    c = Calculator(7,2)
    result = c.sub()
    assert result == 5, '减法运算失败'

def test_mul():
    c = Calculator(3,3)
    result = c.mul()
    assert  result == 10, '乘法运算失败'

def test_div():
    c = Calculator(6,2)
    result = c.div()
    assert result == 3, '除法运算失败'

if __name__ == '__main__':
    test_add()
    test_sub()
    test_mul()
    test_div()

#测试Calculator类V2版
import unittest
from calculator import  Calculator

class TestCalculator(unittest.TestCase):
    def test_add(self):
        c = Calculator(3, 5)
        result = c.add()
        self.assertEqual(result,8)


    def test_sub(self):
        c = Calculator(7, 2)
        result = c.sub()
        self.assertEqual(result,5)

    def test_mul(self):
        c = Calculator(3, 3)
        result = c.mul()
        self.assertEqual(result,10)

    def test_div(self):
        c = Calculator(6, 2)
        result = c.div()
        self.assertEqual(result,3)

if __name__ == '__main__':
    unittest.main()
    
#测试Calculator类V3版
from calculator import Calculator
import unittest
import importlib

class TestCalculatorV2(unittest.TestCase):
    #测试用例前置动作
    def setUp(self):
        print("test start:")

    #测试用例后置动作
    def tearDown(self):
        print("test end")

    def test_add(self):
        c = Calculator(3, 5)
        result = c.add()
        self.assertEqual(result, 8)

    def test_sub(self):
        c = Calculator(7, 2)
        result = c.sub()
        self.assertEqual(result, 5)

    def test_mul(self):
        c = Calculator(3, 3)
        result = c.mul()
        self.assertEqual(result, 10)

    def test_div(self):
        c = Calculator(6, 2)
        result = c.div()
        self.assertEqual(result, 3)

if __name__ == '__main__':
        #创建测试套件
        suit = unittest.TestSuite()
        suit.addTest(TestCalculatorV2("test_add"))
        suit.addTest(TestCalculatorV2("test_sub"))
        suit.addTest(TestCalculatorV2("test_mul"))
        suit.addTest(TestCalculatorV2("test_div"))

        #创建测试运行器
        runner = unittest.TextTestRunner()
        runner.run(suit)

6.断言方法
import unittest
import importlib

class TestAssert(unittest.TestCase):
    def test_equal(self):
        self.assertEqual(2+2,4)
        self.assertEqual("python","python")
        self.assertNotEqual("hello","python")

    def test_in(self):
        self.assertIn("hello","hello world")
        self.assertNotIn("hi","hello")

    def test_true(self):
        self.assertTrue(True)
        self.assertFalse(False)

if __name__ == '__main__':
    unittest.main()
7.判断某年是否为闰年
class LeapYear:
    def __init__(self,year):
        self.year = int(year)

    def answer(self):
        year = self.year
        if year%100==0:
            if year&400==0:
                #整百年能被400整除的是闰年
                return "{0}是闰年".format(year)
            else:
                return "{0}不是闰年".format(year)
        else:
            if year%4==0:
                #非整百年能被4整除的是闰年
                return "{0}是闰年".format(year)
            else:
                return "{0}不是闰年".format(year)
#测试某年是否为闰年
import unittest
import importlib
from leap_year import LeapYear

class TestLeapYear(unittest.TestCase):
    def test_2000(self):
        ly = LeapYear(2000)
        self.assertEqual(ly.answer(),"2000是闰年")

    def test_2004(self):
        ly = LeapYear(2004)
        self.assertEqual(ly.answer(),"2004是闰年")

    def test_2017(self):
        ly = LeapYear(2017)
        self.assertEqual(ly.answer(),"2017不是闰年")

    def test_2100(self):
        ly = LeapYear(2100)
        self.assertEqual(ly.answer(),"2100不是闰年")

if __name__=='__main__':
    unittest.main()
8.测试用例的执行顺序
#-*-coding: utf-8-*-
#@Time  :2021/12/24 5:26
#@Author: sixiaoyou
#@Email: 834628301@qq.com
#@File: TestBdd.py
import unittest
import importlib

class TestBdd(unittest.TestCase):

    def setUp(self):
        print("test TestBdd:")

    def test_ccc(self):
        print("test ccc")

    def test_aaa(self):
        print("test aaa")

class TestAdd(unittest.TestCase):
    def setUp(self):
        print("test TestAdd:")

    def test_bbb(self):
        print("test bbb")

# if __name__ == "__main__":
#     unittest.main()

if __name__=="__main__":
    #构造测试集
    suite = unittest.TestSuite()
    suite.addTest(TestBdd("test_aaa"))
    suite.addTest(TestBdd("test_ccc"))
    suite.addTest(TestAdd("test_bbb"))

    runner = unittest.TextTestRunner()
    runner.run(suite)
9.跳过测试和预期失败
import unittest

class MyTest(unittest.TestCase):
    @unittest.skip("直接跳过测试")
    def test_skip(self):
        print("test aaa")

    @unittest.skipIf(3>2,"当条件为真时跳过测试")
    def test_skip_if(self):
        print("test bbb")

    @unittest.skipUnless(3>2,"当条件为真时执行测试")
    def test_skip_unless(self):
        print('test ccc')

    @unittest.expectedFailure
    def test_expected_failure(self):
        self.assertEqual(2,3)

if __name__=="__main__":
    unittest.main()
10.Fixture
import unittest

def setUpModule():
    print("test module start >>>>>>>>>>>>>>>")

def tearDownModule():
    print("test module end >>>>>>>>>>>>>>>>>")

class MyTest(unittest.TestCase):

    @classmethod
    def setUpClass(cls):
        print("test class start =============>")

    @classmethod
    def tearDownClass(cls):
        print("test class end ==================>")

    def setUp(self):
        print("test case start -->")

    def tearDown(self):
        print("test case end -->")

    def test_case1(self):
        print("test case1")

    def test_case2(self):
        print("test case2")

if __name__ == "__main__":
    unittest.main()
11.执行多个测试文件
import unittest

#定义测试用例的目录为当前目录中的test_case/目录
test_dir ='../20211220'
suits=unittest.defaultTestLoader.discover(test_dir,pattern='test*.py')

if __name__=="__main__":
    runner = unittest.TextTestRunner()
    runner.run(suits)
12.编写Web自动化测试
#测试百度V1
import unittest
from time import sleep
from selenium import webdriver

class TestBaidu(unittest.TestCase):
    def setUp(self):
        self.driver = webdriver.Chrome()
        self.base_url = "https://www.baidu.com"

    def test_search_key_selenium(self):
        self.driver.get(self.base_url)
        self.driver.find_element_by_id("kw").send_keys("selenium")
        self.driver.find_element_by_id("su").click()
        sleep(2)
        title = self.driver.title
        self.assertEqual(title,"selenium_百度搜索")

    def test_search_key_unittest(self):
        self.driver.get(self.base_url)
        self.driver.find_element_by_id("kw").send_keys(("unittest"))
        self.driver.find_element_by_id("su").click()
        sleep(2)
        title=self.driver.title
        self.assertEqual(title,"unittest_百度搜索")

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

if __name__=="__main__":
    unittest.main()

#测试百度V2
import unittest
from time import sleep
from selenium import webdriver

class TestBaiduV2(unittest.TestCase):
    def setUp(self):
        self.driver = webdriver.Chrome()
        self.base_url = "http://www.baidu.com"

    def baidu_search(self,search_key):
        self.driver.get(self.base_url)
        self.driver.find_element_by_id("kw").send_keys(search_key)
        self.driver.find_element_by_id("su").click()
        sleep(2)

    def test_search_key_selenium(self):
        search_key = "selenium"
        self.baidu_search(search_key)
        self.assertEqual(self.driver.title,search_key+"_百度搜索")

    def test_search_key_unittest(self):
        search_key = "unittest"
        self.baidu_search(search_key)
        self.assertEqual(self.driver.title,search_key + "_百度搜索")

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

if __name__=="__main__":
    unittest.main()

#测试百度V3
from time import sleep
from selenium import webdriver

class TestBaiduV3(unittest.TestCase):
    @classmethod
    def setUpClass(cls):
        cls.driver = webdriver.Chrome()
        cls.base_url = "http://www.baidu.com"

    def baidu_search(self,search_key):
        self.driver.get(self.base_url)
        self.driver.find_element_by_id("kw").send_keys(search_key)
        self.driver.find_element_by_id("su").click()
        sleep(2)

    def test_search_key_selenium(self):
        search_key = "selenium"
        self.baidu_search(search_key)
        self.assertEqual(self.driver.title,search_key+"_百度搜索")

    def test_search_key_unittest(self):
        search_key = "unittest"
        self.baidu_search(search_key)
        self.assertEqual(self.driver.title,search_key + "_百度搜索")

    @classmethod
    def tearDownClass(cls):
        cls.driver.quit()

if __name__=="__main__":
    unittest.main()
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/688794.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号