Selenium3自动化测试实战(3)

38 篇文章 6 订阅
20 篇文章 0 订阅


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()
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

司小幽

真诚赞赏,手留余香。

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值