您的位置:软件测试 > 开源软件测试 > 开源功能测试工具 > Selenium
Selenium with Python学习点滴
作者:-voyage- 发布时间:[ 2016/7/19 14:27:55 ] 推荐标签:功能测试 单元测试 线程

  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 ']
  ]
  .....

上一页12下一页
软件测试工具 | 联系我们 | 投诉建议 | 诚聘英才 | 申请使用列表 | 网站地图
沪ICP备07036474 2003-2017 版权所有 上海泽众软件科技有限公司 Shanghai ZeZhong Software Co.,Ltd