1.查詢API的方法
命令行輸入
python -m pydoc -p 8090
瀏覽器輸入127.0.0.1:8090能查看已安裝的package的API
2.Frame內(nèi)的元素查找需要先切換到相關(guān)frame內(nèi)才能查找到
switch_to_frame('frame_name'),返回默認(rèn)視圖為switch_to_default_content()
3.查找元素的方法多樣,盡量選擇比較固定的方式,后期如果頁(yè)面有改動(dòng)不會(huì)影響元素的定位
xpath是xml語(yǔ)言查找信息的語(yǔ)言.
例如取百度搜索的第一條記錄的title的xpath,采用定位方式為
/html/body/div[3]/div[4]/div/div[3]/div[1]/h3/a
采用相對(duì)方式定位
//div[@id='1']/h3/a
或者是
//div[@id='content_left']/div[1]/h3/a
顯然采用的方式定位時(shí),如果頁(yè)面有一點(diǎn)改動(dòng),例如增加div嵌套后定位失效了.
此外還有其它的定位方式:
id,name,class name,link text,tag name,xpath,css selector
4.多個(gè)測(cè)試用例的執(zhí)行方案:
由于采用了HTMLTestRunner,一種方案是將所有的測(cè)試用例全部加入到一個(gè)Testsuit生成完整的測(cè)試報(bào)告.
或者采用另一種方案,執(zhí)行py文件,每個(gè)文件生成一個(gè)報(bào)告,后再將多份報(bào)告進(jìn)行整合.(報(bào)告的整合部分另外說(shuō)明)
如果不采用多線程,第一種方案比較簡(jiǎn)單,不用考慮測(cè)試報(bào)告的合并問(wèn)題.(第一種方案另外說(shuō)明)
但是如果采用多線程,只能另一種方案了.多線程結(jié)合Selenium grid,這樣測(cè)試效率更高.
如下代碼,5個(gè)線程,執(zhí)行py文件500次.
1 import threading,sys
2 from time import ctime,sleep
3 from subprocess import Popen,PIPE
4
5 lock=threading.Lock()
6 class MyThread(threading.Thread):
7 def __init__(self,filename,timeout):
8 threading.Thread.__init__(self)
9 self.filename=filename
10 self.timeout=timeout
11 def run(self):
12 p=Popen("python "+filename,shell=True,stdout=PIPE)
13 print p.stdout.readlines()
14 sleep(timeout)
15 if __name__=='__main__':
16 print 'main start time:%s' %ctime()
17 file=[]
18 for j in range(500):
19 file.append("E:\python\sub.py")
20 finishjob=0
21 while finishjob<len(file):
22 for i in range(5):
23 #此處加鎖是為了取列表的時(shí)候避免重復(fù)
24 lock.acquire()
25 filename=file[i+finishjob]
26 timeout=i+1+finishjob
27 lock.release()
28 my_thread=MyThread(filename,timeout)
29 my_thread.start()
30 my_thread.join()
31 finishjob+=5
32 print 'main end time:%s' %ctime()
sub.py
1 #! /usr/bin/env python
2 #coding=utf-8
3 import sys,random,threading
4 from time import ctime,sleep
5 if __name__=='__main__':
6 thread=threading.current_thread()
7 print 'Start:%s' %(str(ctime())[14:19])
8 rtime=random.randint(5,30)
9 sleep(rtime)
10 print 'sleep:%s' %(str(rtime))
11 print 'End:%s' %(str(ctime())[14:19])
執(zhí)行結(jié)果:
main start time:Wed Jun 22 09:50:17 2016
[[[[['Start:50:18
''Start:50:17
''Start:50:17
''Start:50:18
''Start:
50:18
', 'sleep:29
', 'End:50:47
'], 'sleep:29
', 'End:50:47
']
, 'sleep:8
', 'End:50:26
']
, , 'sleep:26
', 'End:50:44
']'sleep:5
', 'End:50:23
']
[[[[['Start:50:52
''Start:50:52
''Start:50:52
''Start:50:52
''Start:
50:52
', 'sleep:20
', 'End:51:12
'], 'sleep:10
', 'End:51:02
']
, 'sleep:14
', 'End:51:06
'
, 'sleep:9
', 'End:51:01
'], 'sleep:22
', 'End:51:14
']
]
.....