1.查询API的方法
命令行输入
python -m pydoc -p 8090
浏览器输入127.0.0.1:8090能查看已安装的package的API
2.Frame内的元素查找需要先切换到相关frame内才能查找到
switch_to_frame('frame_name'),返回默认视图为switch_to_default_content()
3.查找元素的方法多样,尽量选择比较固定的方式,后期如果页面有改动不会影响元素的定位
xpath是xml语言查找信息的语言.
例如取百度搜索的第一条记录的title的xpath,采用定位方式为
/html/body/div[3]/div[4]/div/div[3]/div[1]/h3/a
采用相对方式定位
//div[@id='1']/h3/a
或者是
//div[@id='content_left']/div[1]/h3/a
显然采用的方式定位时,如果页面有一点改动,例如增加div嵌套后定位失效了.
此外还有其它的定位方式:
id,name,class name,link text,tag name,xpath,css selector
4.多个测试用例的执行方案:
由于采用了HTMLTestRunner,一种方案是将所有的测试用例全部加入到一个Testsuit生成完整的测试报告.
或者采用另一种方案,执行py文件,每个文件生成一个报告,后再将多份报告进行整合.(报告的整合部分另外说明)
如果不采用多线程,第一种方案比较简单,不用考虑测试报告的合并问题.(第一种方案另外说明)
但是如果采用多线程,只能另一种方案了.多线程结合Selenium grid,这样测试效率更高.
如下代码,5个线程,执行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 #此处加锁是为了取列表的时候避免重复
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])
执行结果:
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
']
]
.....