python实时定位查询系统_selenium+python实现查询和下载文件

在bug管理系统上,按项目查询出来所有的bug,然后点击导出按钮,导出这个项目所有的bug,用selenium+python实现

操作步骤如下:

1、打开网址url

2、输入用户名和密码,点击登录(不需要验证码)

3、在项目框内输入项目编码,点击查询按钮

4、点击导出按钮,弹框提示导出成功(导出不是同步导出的,这里点击导出只是发起了一个导出操作,等待1到2分钟后,再去导出页面查看是否导出成功)

5、去导出页面下载导出的文件 xxxxxx.xls

因为之前没有用过爬虫工具,但是知道有个selenium这个自动化测试框架,本身这个需求就很简单,找到几个输入框和按钮,顺序操作就行,登录也不需要验证码

python用的是3.5版本,selenium用的是3.3 GeckoDriv

from selenium importwebdriverfrom selenium.webdriver.common.keys importKeys

browser=webdriver.Firefox()

browser.get('http://www.yahoo.com')assert 'Yahoo!' inbrowser.title

elem= browser.find_element_by_name('p') #Find the search box

elem.send_keys('seleniumhq' +Keys.RETURN)

browser.quit()

先在selenium上抄了一个例子,一运行,发现了少了GeckoDriver,下载GeckoDriver,放在一个path路径下

from selenium importwebdriverfrom selenium.webdriver.common.keys importKeys

browser=webdriver.Firefox()

browser.get('http://www.xxxxxxx.com') #这里地址用的是查询页面,如果没有登录就会跳转到登录页面,登录之后会自动跳到查询页面#assert 'Yahoo!' in browser 这行不要了

username=browser.find_element_by_name('uid')#获取username输入框

username.clear() #先清空输入框

username.send_keys(username) #输入用户名

password=browser.find_element_by_name('password')#获取username输入框

password.clear() #先清空输入框

password.send_keys(password) #输入密码

password.send_keys(Keys.RETURN) #输入密码之后输入RETURN特殊键实现登录,不用再定位登录按钮

以上代码就实现了用户登录

from selenium importwebdriverfrom selenium.webdriver.common.keys importKeysfrom time #time。sleep()实现延时

browser =webdriver.Firefox()

browser.get('http://www.xxxxxxx.com') #这里地址用的是查询页面,如果没有登录就会跳转到登录页面,登录之后会自动跳到查询页面#assert 'Yahoo!' in browser 这行不要了

username=browser.find_element_by_name('uid')#获取username输入框

username.clear() #先清空输入框

username.send_keys(username) #输入用户名

password=browser.find_element_by_name('password')#获取username输入框

password.clear() #先清空输入框

password.send_keys(password) #输入密码

password.send_keys(Keys.RETURN) #输入密码之后输入RETURN特殊键实现登录,不用再定位登录按钮

time.sleep(3) #延时3秒等待页面跳转

browser.find_element_by_name('项目').send_keys(ID) #定位到项目ID输入框并输入项目ID

browser.find_element_by_id('search').click() #定位到搜索按钮,并点击

time.sleep(3) #延时等待搜索结果

browser.find_element_by_xpath('\\').click() #定位到导出按钮,并点击

time.sleep(3) #延时 弹出导出提示框,提示用户到另外一个页面下载导出数据

browser.find_element_by_xpath('\\').click()#定位到弹出框上的确定按钮,点击确定隐藏提示框,以方便导出下一个项目的bug列表

browser.get('http://www.yyyyyy.com') #跳转到下载页面

filelist=browser.find_elements_by_xpath('\\') #定位到文件列表中所有的文件

for file infilelist:

file.click()#点击保存文件 这里有个问题,firefox保存文件会有一个提示框,让你选择是保存还是打开

百度了一下,在这里找到了方法http://www.51testing.com/html/50/598350-860378.html

设置firefox的Profile:

browser.download.dir:指定下载路径

browser.download.folderList:设置成 2 表示使用自定义下载路径;设置成 0 表示下载到桌面;设置成 1 表示下载到默认路径

browser.download.manager.showWhenStarting:在开始下载时是否显示下载管理器

browser.helperApps.neverAsk.saveToDisk:对所给出文件类型不再弹出框进行询问

profile =webdriver.FirefoxProfile()

profile.set_preference('browser.download.dir', 'd:\\')

profile.set_preference('browser.download.folderList', 2)

profile.set_preference('browser.download.manager.showWhenStarting', False)

profile.set_preference('browser.helperApps.neverAsk.saveToDisk', 'application/zip')

driver= webdriver.Firefox(firefox_profile=profile)

最后就是延时,刚开始用的是time.sleep()实现延时,运行很慢,百度一下,在这里找到了,http://www.cnblogs.com/zl0372/p/selenium_python.html

通过implicitly_wait()实现智能等待

最终代码:

from selenium importwebdriverfrom selenium.webdriver.common.keys importKeysfrom time #time。sleep()实现延时

profile=webdriver.FirefoxProfile()

profile.set_preference('browser.download.dir', 'd:\\')

profile.set_preference('browser.download.folderList', 2)

profile.set_preference('browser.download.manager.showWhenStarting', False)

profile.set_preference('browser.helperApps.neverAsk.saveToDisk', 'application/zip')

browser= webdriver.Firefox(firefox_profile=profile)

browser.get('http://www.xxxxxxx.com') #这里地址用的是查询页面,如果没有登录就会跳转到登录页面,登录之后会自动跳到查询页面#assert 'Yahoo!' in browser 这行不要了

username=browser.find_element_by_name('uid')#获取username输入框

username.clear() #先清空输入框

username.send_keys(username) #输入用户名

password=browser.find_element_by_name('password')#获取username输入框

password.clear() #先清空输入框

password.send_keys(password) #输入密码

password.send_keys(Keys.RETURN) #输入密码之后输入RETURN特殊键实现登录,不用再定位登录按钮

browser.implicitly_wait(5) #延时3秒等待页面跳转

browser.find_element_by_name('项目').send_keys(ID) #定位到项目ID输入框并输入项目ID

browser.find_element_by_id('search').click() #定位到搜索按钮,并点击

browser.implicitly_wait(5) #延时等待搜索结果

browser.find_element_by_xpath('\\').click() #定位到导出按钮,并点击

leep(3 #延时 弹出导出提示框,提示用户到另外一个页面下载导出数据

browser.find_element_by_xpath('\\').click()#定位到弹出框上的确定按钮,点击确定隐藏提示框,以方便导出下一个项目的bug列表

browser.get('http://www.yyyyyy.com') #跳转到下载页面

filelist=browser.find_elements_by_xpath('\\') #定位到文件列表中所有的文件

for file infilelist:

file.click()#点击保存文件

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值