Selenium with Python学习点滴

发表于:2016-7-19 11:32

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:-voyage-    来源:51Testing软件测试网采编

  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\r\n''Start:50:17\r\n''Start:50:17\r\n''Start:50:18\r\n''Start:
  50:18\r\n', 'sleep:29\r\n', 'End:50:47\r\n'], 'sleep:29\r\n', 'End:50:47\r\n']
  , 'sleep:8\r\n', 'End:50:26\r\n']
  , , 'sleep:26\r\n', 'End:50:44\r\n']'sleep:5\r\n', 'End:50:23\r\n']
  [[[[['Start:50:52\r\n''Start:50:52\r\n''Start:50:52\r\n''Start:50:52\r\n''Start:
  50:52\r\n', 'sleep:20\r\n', 'End:51:12\r\n'], 'sleep:10\r\n', 'End:51:02\r\n']
  , 'sleep:14\r\n', 'End:51:06\r\n'
  , 'sleep:9\r\n', 'End:51:01\r\n'], 'sleep:22\r\n', 'End:51:14\r\n']
  ]
  .....
21/212>
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号