原处:http://blog.csdn.net/wangaiqian/article/details/12846071
搜索框要求:1. 输入关键字自动补全 。 (自动补全股票支持:股票代码,股票拼音,股票简拼,股票名称)
2. 输入不同的关键字触发不同的搜索条件。(1.输入关键字不选中补全的信息进行检索 2.输入关键字选中补全信息中即含有股票代码与名称 3.输入关键字选中补全信息中不含有”股票代码与名称“ )
目前只实现要求1,要求2 后续
数据库构造数据如图:
搜索界面如图:
编写的脚本如下:
- <span style="font-family:Microsoft YaHei; font-size:14px">#-*- coding: utf-8 -*-
- from selenium import webdriver
- from selenium.common.exceptions import TimeoutException
- from selenium.webdriver.support.ui import WebDriverWait
- from selenium.webdriver.common.keys import Keys
- from selenium.webdriver.support.ui import Select
- import string
- import unittest
- import re
- import time
- import xlrd
- import xlwt
- import urllib2
- import pymssql
- import sys
- class TEST(unittest.TestCase):
- def setUp(self):
- self.driver=webdriver.Ie(r"C:\\IEDriver\\IEDriverServer.exe")
- time.sleep(3)
- self.verificationErrors=[]
- def test_WebTest1(self):
- dr=self.driver
- dr.get("http://localhost:8080/search/admin.do")
- time.sleep(2)
- dr.find_element_by_id("username").send_keys("ww")
- dr.find_element_by_id("password").send_keys("ww")
- dr.find_element_by_id("ext-gen17").click()
- #等待时间的新用法, 比time.sleep()更智能,time.sleep()选择一个固定的时间的等待,implicitly_wait时间范围内的等待
- dr.implicitly_wait(2)
- dr.get("http://localhost:8080/search/")
- time.sleep(10)
- #定义数据库连接
- conn = pymssql.connect(host='localhost', user='sa', password='rz@123', database='testsource')
- cur = conn.cursor()
- #code:代码,name 名称 ,py:名称的全拼 jp:那么的简拼
- sql_source='SELECT code,name,py,jp FROM [testsource].[dbo].[stock_info]'
- cur.execute(sql_source)
- row_news_com=cur.fetchone()
- #获取code的信息 去掉空字符串
- code=row_news_com[0].decode('gb18030').encode('utf-8').strip(' ')
- #获取name信息
- name=row_news_com[1].decode('gb18030').encode('utf-8').strip(' ')
- print name ,len(name)
- #获取拼音
- py=row_news_com[2].decode('gb18030').encode('utf-8').strip(' ')
- #获取简拼
- jp=row_news_com[3].decode('gb18030').encode('utf-8').strip(' ')
- #根据股票代码简拼进行补全(输入股票代码的部分 获取补全信息)
- for i in range(len(code)):
- str_code=code[0:len(code)-i]
- dr.find_element_by_id("content").send_keys(str_code)
- dr.implicitly_wait(10)
- str=dr.find_element_by_id("ui-id-1").text
- if (code+name) in code.split("\n"):
- print '%s 补全出的内容 存在 在%s ' % (str_code,(code+name))
- else:
- print '%s 补全出的内容 不存在 在%s' % (str_code,(code+name))
- file="E:/testdate/"+unicode(str_code, "utf8")+".png"
- #截取补全的图片
- dr.get_screenshot_as_file(file)
- dr.find_element_by_id("content").clear()
- #股票名称补全代码
- for i in range(len(name)):
- if len(name)-i*3>=0:
- str_name=name[0:len(name)-i*3]
- dr.find_element_by_id("content").send_keys(unicode(str_name, "utf8"))
- dr.implicitly_wait(10)
- str=dr.find_element_by_id("ui-id-1").text
- if (code+name) in name.split("\n"):
- print '%s 补全出的内容 存在 在%s ' % (str_name,(code+name))
- else:
- print '%s 补全出的内容 不存在 在%s' % (str_name,(code+name))
- #拼凑出保存路径
- file="E:/testdate/"+unicode(str_name, "utf8")+".png"
- #截取补全的图片
- dr.get_screenshot_as_file(file)
- dr.find_element_by_id("content").clear()
- else:
- break
- for i in range(len(jp)):
- str_jp=jp[0:len(jp)-i]
- print str
- dr.find_element_by_id("content").send_keys(str_jp)
- dr.implicitly_wait(10)
- str=dr.find_element_by_id("ui-id-1").text
- if (code+name) in jp.split("\n"):
- print '%s 补全出的内容 存在 在%s ' % (str_jp,(code+name))
- else:
- print '%s 补全出的内容 不存在 在%s !' % (str_jp,(code+name))
- file="E:/testdate/"+str_jp+".png"
- #截取补全的图片
- dr.get_screenshot_as_file(file)
- dr.find_element_by_id("content").clear()
- def testdown(self):
- self.driver.quit()
- self.assertEqual([], self.verificationErrors)
- if __name__=='__main__':
- unittest.main()</span>
运行结果截图如下: