WatirWebdriver应用实例之自动化下载百度相册

前段时间练手baidu相册上传照片之后,自然想玩玩自动化下载照片,结果脚本写着遇到Profile的设置老是过不去,参考网上的经验介绍也无法解决掉,无奈,先遗留这个问题。  

下面的脚本主要完成登录百度相册,批量下载美女写真集的过程。(题外话,百度相册好多mm啊!)


说明一下:
1
、这里遇到了新窗口的场景,定位新窗口也有几种方法,我这里偷懒用了索引的方式。使用.use方法加一个block,block里的操作就是只针对当前窗口的,感觉还是挺清晰的。

browser.window(:index, 1).use do

        browser.a(:text, '批量下载').wait_until_present

        。。。

    end

2、正如前面提到,脚本里也做了注释,目前对下面的问题还是没找到较好做法的:

# 这里有2个遗留问题:

  #1、下载到哪里?文件名叫什么? 我的机器无法使用profile, 所以无法指定下载目录.默认就是Chrome默认的download目录

  #2、怎么知道下载完成?这里等待25秒,是偷懒了。目前似乎没有很好做法,网上有人通过监控该该文件的大小,觉得不是挺满意


# coding: gb2312
require 'watir-webdriver'

# 给String类增加一个编码转换的实例方法gb2312,即把字符串按gb2312编码,可避免Watir从网页提取中文字符时乱码
class String
	def gb2312
		self.encode("gb2312")
	end
end

#遗留问题:偶的机器跑下面这段指定profile的脚本失败,暂时不知如何解决
#~ profile = Selenium::WebDriver::Chrome::Profile.new
#~ profile['download.prompt_for_download'] = false
#~ profile['download.default_directory'] = "d:/"
#~ browser = Watir::Browser.new :chrome, :profile=> profile

# 打开chrome driver
browser = Watir::Browser.new :chrome

begin
	# 登陆baidu相册首页
	browser.goto 'http://xiangce.baidu.com/'
	
	# 点击登陆
	browser.a(:id, 'userbar-login-btn').wait_until_present
	browser.a(:id, 'userbar-login-btn').click
	
	# 输入用户名
	browser.input(:name, 'userName').wait_until_present
	browser.input(:name, 'userName').send_keys('百度账号')
	
	# 输入密码
	browser.input(:name, 'password').wait_until_present
	browser.input(:name, 'password').send_keys('密码')
	
	# 确定
	browser.input(:id, 'TANGRAM__PSP_8__submit').click
	sleep 5
	
	browser.a(:text, '图片广场').wait_until_present
	browser.a(:text, '图片广场').click
	
	# 
	browser.a(:text, '美女').wait_until_present
	browser.a(:text, '美女').click

	# 
	browser.a(:text, '写真').wait_until_present
	browser.a(:text, '写真').click
	
	# 
	browser.a(:text, '美女写真2').wait_until_present
	browser.a(:text, '美女写真2').click	
	
	expected_window = nil
	timeout = 0
	while(timeout < 5)
		browser.windows.each do |win|
			puts win.title.gb2312
			
			if win.title.to_s.gb2312.include?("<美女写真2>的照片")
				expected_window = win
				break
			end
		end
		
		timeout += 1
		sleep 1
	end
	browser.window(:index, 1).wait_until_present
	browser.window(:index, 1).use do
		browser.a(:text, '批量下载').wait_until_present
		browser.a(:text, '批量下载').click

		browser.checkbox(:id, 'select-current').wait_until_present
		browser.checkbox(:id, 'select-current').set(true)
		
		browser.div(:class, 'download-button download-button-upState').click
	end
	
	# 这里有2个遗留问题:
	#1、下载到哪里?文件名叫什么? 我的机器无法使用profile, 所以无法指定下载目录.默认就是Chrome默认的download目录
	#2、怎么知道下载完成?这里等待25秒,是偷懒了。目前似乎没有很好做法,网上有人通过监控该该文件的大小,觉得不是挺满意
	sleep 25
	puts "下载成功"
rescue => error
	puts "出现异常:#{error}"
ensure
	browser.close if browser
end

 


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值