selenium + python 自动化测试

原处:http://blog.csdn.net/wangaiqian/article/details/12846071


搜索框要求:1. 输入关键字自动补全 。 (自动补全股票支持:股票代码,股票拼音,股票简拼,股票名称)

2. 输入不同的关键字触发不同的搜索条件。(1.输入关键字不选中补全的信息进行检索 2.输入关键字选中补全信息中即含有股票代码与名称 3.输入关键字选中补全信息中不含有”股票代码与名称“ )

目前只实现要求1,要求2 后续

数据库构造数据如图:


搜索界面如图:


编写的脚本如下:

[python]  view plain copy
  1. <span style="font-family:Microsoft YaHei; font-size:14px">#-*- coding: utf-8 -*-  
  2. from selenium import webdriver  
  3. from selenium.common.exceptions import TimeoutException  
  4. from selenium.webdriver.support.ui import WebDriverWait  
  5. from selenium.webdriver.common.keys import Keys  
  6. from selenium.webdriver.support.ui import Select  
  7. import string  
  8. import unittest  
  9. import re  
  10. import time  
  11. import xlrd  
  12. import xlwt  
  13. import urllib2  
  14. import pymssql  
  15. import sys  
  16. class TEST(unittest.TestCase):  
  17.     def setUp(self):  
  18.         self.driver=webdriver.Ie(r"C:\\IEDriver\\IEDriverServer.exe")  
  19.         time.sleep(3)  
  20.         self.verificationErrors=[]  
  21.     def test_WebTest1(self):  
  22.         dr=self.driver  
  23.         dr.get("http://localhost:8080/search/admin.do")  
  24.         time.sleep(2)  
  25.         dr.find_element_by_id("username").send_keys("ww")  
  26.         dr.find_element_by_id("password").send_keys("ww")  
  27.         dr.find_element_by_id("ext-gen17").click()  
  28.         #等待时间的新用法, 比time.sleep()更智能,time.sleep()选择一个固定的时间的等待,implicitly_wait时间范围内的等待  
  29.         dr.implicitly_wait(2)  
  30.         dr.get("http://localhost:8080/search/")  
  31.         time.sleep(10)  
  32.         #定义数据库连接  
  33.         conn = pymssql.connect(host='localhost', user='sa', password='rz@123', database='testsource')  
  34.         cur = conn.cursor()  
  35.         #code:代码,name 名称 ,py:名称的全拼  jp:那么的简拼  
  36.         sql_source='SELECT code,name,py,jp  FROM [testsource].[dbo].[stock_info]'  
  37.         cur.execute(sql_source)  
  38.         row_news_com=cur.fetchone()  
  39.         #获取code的信息 去掉空字符串  
  40.         code=row_news_com[0].decode('gb18030').encode('utf-8').strip(' ')  
  41.         #获取name信息  
  42.         name=row_news_com[1].decode('gb18030').encode('utf-8').strip(' ')  
  43.         print  name ,len(name)  
  44.         #获取拼音  
  45.         py=row_news_com[2].decode('gb18030').encode('utf-8').strip(' ')  
  46.         #获取简拼  
  47.         jp=row_news_com[3].decode('gb18030').encode('utf-8').strip(' ')  
  48.         #根据股票代码简拼进行补全(输入股票代码的部分 获取补全信息)  
  49.         for i in range(len(code)):  
  50.             str_code=code[0:len(code)-i]  
  51.             dr.find_element_by_id("content").send_keys(str_code)  
  52.             dr.implicitly_wait(10)  
  53.             str=dr.find_element_by_id("ui-id-1").text  
  54.             if (code+name) in code.split("\n"):  
  55.                 print '%s 补全出的内容 存在 在%s ' % (str_code,(code+name))  
  56.             else:  
  57.                 print '%s 补全出的内容 不存在 在%s' % (str_code,(code+name))  
  58.             file="E:/testdate/"+unicode(str_code, "utf8")+".png"  
  59.             #截取补全的图片  
  60.             dr.get_screenshot_as_file(file)              
  61.             dr.find_element_by_id("content").clear()  
  62.         #股票名称补全代码  
  63.         for i in range(len(name)):  
  64.             if len(name)-i*3>=0:  
  65.                 str_name=name[0:len(name)-i*3]  
  66.                 dr.find_element_by_id("content").send_keys(unicode(str_name, "utf8"))  
  67.                 dr.implicitly_wait(10)  
  68.                 str=dr.find_element_by_id("ui-id-1").text  
  69.                 if (code+name) in name.split("\n"):  
  70.                     print '%s 补全出的内容 存在 在%s ' % (str_name,(code+name))  
  71.                 else:  
  72.                     print '%s 补全出的内容 不存在 在%s' % (str_name,(code+name))  
  73.                 #拼凑出保存路径  
  74.                 file="E:/testdate/"+unicode(str_name, "utf8")+".png"  
  75.                 #截取补全的图片  
  76.                 dr.get_screenshot_as_file(file)  
  77.                 dr.find_element_by_id("content").clear()  
  78.             else:  
  79.                 break  
  80.                   
  81.         for i in range(len(jp)):  
  82.             str_jp=jp[0:len(jp)-i]  
  83.             print str  
  84.             dr.find_element_by_id("content").send_keys(str_jp)  
  85.             dr.implicitly_wait(10)  
  86.             str=dr.find_element_by_id("ui-id-1").text  
  87.             if (code+name) in jp.split("\n"):  
  88.                 print '%s 补全出的内容 存在 在%s ' % (str_jp,(code+name))  
  89.             else:  
  90.                 print '%s 补全出的内容 不存在 在%s !' % (str_jp,(code+name))  
  91.             file="E:/testdate/"+str_jp+".png"  
  92.             #截取补全的图片  
  93.             dr.get_screenshot_as_file(file)       
  94.             dr.find_element_by_id("content").clear()             
  95.           
  96.     def testdown(self):  
  97.         self.driver.quit()  
  98.         self.assertEqual([], self.verificationErrors)  
  99.           
  100.           
  101.   
  102. if __name__=='__main__':  
  103.     unittest.main()</span>  

运行结果截图如下:



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值