1 . PO模型在自动化中经常会被使用到,一下就是PO模型的具体实例
2. 实现BasePagefrom seleniumimport webdriverfrom selenium. webdriver. common. action_chainsimport ActionChains#鼠标操作 class BasePage ( ) : ''' BasePage封装所有界面都公用的方法。 例如driver,find_element等 ''' # 实例化BasePage类时,事先执行的__init__方法,该方法需要传递参数 def __init__ ( self, driver, url) : self. driver= driver self. base_url= url# 进入网址 def get ( self) : self. driver. get( self. base_url) #元素定位,替代八大定位 def get_element ( self, * locator) : return self. driver. find_element( * locator) #点击 def left_click ( self, * locator) : ActionChains( self. driver) . click( self. get_element( * locator) ) . perform( ) #输入 def send_text ( self, text, * locator) : self. driver. find_element( * locator) . send_keys( text) #清除 def clear_text ( self, * locator) : self. driver. find_element( * locator) . clear( ) # 表单切换 def switch_iframe ( self, * locator) : self. driver. switch_to. frame( self. driver. find_element( * locator) ) #窗口切换 def switch_window ( self, n) : self. driver. switch_to. window( self. driver. window_handles[ n] ) 3. 实现SearchPagefrom selenium. webdriver. common. byimport Byfrom base. base_pageimport BasePageclass SearchOne ( BasePage) : def __init__ ( self, driver, url) : BasePage. __init__( self, driver, url) #进入百度 def open_baidu ( self) : self. get( ) #输入数据 def input_search_content ( self, text) : self. send_text( text, By. ID, "kw" ) # 点击按钮 def click_baidu_search ( self) : self. left_click( By. ID, "su" ) def click_open_hao ( self) : self. left_click( By. XPATH, ".//*[@id='1']/h3/a[1]" ) 4. 实现TestCase `` ```pythonimport unittestfrom seleniumimport webdriverfrom page. page_oneimport SearchOnefrom page. page_twoimport SearchTwoclass BaiBu ( unittest. TestCase) : @classmethod def setUpClass ( cls) - > None : cls. driver= webdriver. Firefox( ) cls. driver. implicitly_wait( 10 ) def test001 ( self) : url= "http://www.baidu.com" s= SearchOne( self. driver, url) s. open_baidu( ) s. input_search_content( "123" ) s. click_baidu_search( ) s. click_open_hao( ) self. driver. switch_to. window( self. driver. window_handles[ 1 ] ) def test002 ( self) : s= SearchTwo( self. driver, "" ) s. open_baidu_map( ) def tearDown ( self) - > None : # self.driver.quit() pass if __name__== '__main__' : unittest. main( ) 5 . pytest模式写法from seleniumimport webdriverclass Test_loginDvwa ( ) : def test_login ( self) : self. driver= webdriver. Firefox( ) self. url= "http://10.5.1.247/dvwa/login.php" username= "admin" password= "password" sr= DvwaPage( self. driver, self. url) sr. login_dvwa( username, password) sr. search( "nick" ) if name== ‘main’: pytest. main( [ "-sq" , "test_loginDvwa.py" ] )