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( )
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)
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.认识单元测试
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
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( )
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( )
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 :
return "{0}是闰年" . format ( year)
else :
return "{0}不是闰年" . format ( year)
else :
if year% 4 == 0 :
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.测试用例的执行顺序
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__" :
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_dir = '../20211220'
suits= unittest. defaultTestLoader. discover( test_dir, pattern= 'test*.py' )
if __name__== "__main__" :
runner = unittest. TextTestRunner( )
runner. run( suits)
12.编写Web自动化测试
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( )
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( )
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( )