3
模組與函式
3.1程式結構
python
的程式由
package,module,function
組成,分別是包,模組,函式。模組是函式和類的集合,包,模組,函式之間的關係如下:
3.2模組
python
的程式就是由模組來組成,乙個
python
檔案可以看成是乙個模組,而模組一般由**,函式,或者類組成。如下**,建立
demo.py
檔案,編寫乙個自動化的測試指令碼,
demo.py
檔案就是模組,見**:
#!coding:utf-8
from seleniumimport webdriver
driver=webdriver.firefox()
driver.maximize_window()
driver.get('')
element=driver.find_element_by_id('kw')
element.send_keys('selenium')
driver.quit()
使用模組中的函式或者類的時候,首先需要把模組匯入,模組的匯入是
import
,import
可以直接匯入模組,如
import time
。如果不想使用程式的字首,可以使用
from ... import ...
,如from time import sleep。
模組的屬性
:__name__
一般是判斷是否是程式的入口
,見程式的例項**:
#!coding:utf-8
from seleniumimport webdriver
driver=webdriver.firefox()
driver.maximize_window()
driver.get('')
element=driver.find_element_by_id('kw')
element.send_keys('selenium')
driver.quit()
if__name__=='__main__':
print u'
主程式執行
'else:
print u'sorry,
程式被另外的模組呼叫
' 3.3函式
python
的函式是是一段可重複多次呼叫的**,依據引數,來返回結果。
python
的函式定義非常簡單,如下定義乙個二個數相加的方法,見**:
def add(x,y):
return x+y
print add(2,3)
對自動化的測試指令碼進行函式化,見**:
登入').click()
driver.find_element_by_id('tangram__psp_8__username').send_keys('[email protected]')
driver.find_element_by_id('tangram__psp_8__password').send_keys('cl070209')
driver.find_element_by_id('tangram__psp_8__submit').click()
element=driver.find_element_by_xpath(".//*[@id='s_username_top']/span")
#獲取使用者暱稱
nicheng=element.text
sleep(3)
actionchains(driver).move_to_element(element).perform()
sleep(3)
driver.find_element_by_xpath(".//*[@id='s_user_name_menu']/div/a[5]").click()
driver.find_element_by_xpath(".//*[@id='tip_con_wrap']/div[3]/a[3]").click()
assert text in u'
'函式化後的檔案為
location.py
,我們把需要封裝的公共方法封裝在
location.py
的檔案中,
location.py
的檔案原始碼為:
#!coding:utf-8
from seleniumimport webdriver
from selenium.webdriver.common.action_chainsimport actionchains
from time import sleep
deffindid(driver,id):
f=driver.find_element_by_id(id)
return f
deffindlinktext(driver,linktext):
f=driver.find_element_by_link_text(linktext)
return f
def findxpath(driver,xpath):
f=driver.find_element_by_xpath(xpath)
return f
#登入方法
deflogin(driver,username='[email protected]',passwd='194935server'):
findlinktext(driver,u'
登入').click()
sleep(2)
findid(driver,'tangram__psp_8__username').send_keys(username)
sleep(2)
findid(driver,'tangram__psp_8__password').send_keys(passwd)
sleep(2)
findid(driver,'tangram__psp_8__submit').click()
sleep(3)
#退出方法
def exit(driver):
sleep(2)
element=findxpath(driver,".//*[@id='s_username_top']/span")
actionchains(driver).move_to_element(element).perform()
sleep(2)
findxpath(driver,".//*[@id='s_user_name_menu']/div/a[5]").click()
sleep(2)
findxpath(driver,".//*[@id='tip_con_wrap']/div[3]/a[3]").click()
#獲取暱稱方法
defgetnicheng(driver):
element=findxpath(driver,".//*[@id='s_username_top']/span")
return element.text
在baidu.py
呼叫封裝成函式的檔案
,簡化自動化的測試指令碼,
檔案的原始碼為:
#coding:utf-8
from seleniumimport webdriver
fromselenium.webdriver.common.action_chains import actionchains
from time import sleep
import location
driver=webdriver.firefox()
driver.maximize_window()
driver.implicitly_wait(30)
driver.get('')
location.login(driver)
text=location.getnicheng(driver)
location.exit(driver)
assert text in u'
清晨無涯
'driver.quit()
箭頭函式與普通函式以及this指向問題
沒有引數只有單條語句 var fun consoloe.log 1 fun 乙個引數單條語句,可以省略 var fun a console.log 1 a就是傳入的單個引數多個引數多條語句 var fun a,b 返回的是物件要加 var fun var b return 1 var b new b...
python 函式與模組
1,定義函式 def 函式名 參數列 函式語句 return 發回值 引數和返回值都可以省略 def hello print xyf 無敵 hello 2,引數傳遞 def add a,b return a b print add a b 順序依次傳遞 print add b a a b 按形參賦值...
Python 函式以及異常處理
define 定義 def 方法名字 形參 def test pass test 無引數無返回值 def test print 這是我的地盤 test 無引數有返回值 def test fond 學習python使我快樂 return fond t test print t 有引數無返回值 def ...