【Watir Webdriver】自动化上传照片到百度相册
来源:互联网 发布:公众号小说收费源码 编辑:程序博客网 时间:2024/06/05 03:04
这年月,手机和硬盘里存放的生活照片越来越多,一直都有点担心硬盘坏掉导致照片不可恢复,毕竟这种痛苦是经历过的。
现在好了,各大互联网巨头都提供网盘或者相册之类的服务,把照片归档上去,就安全可靠多了。更保险点,我想一式多份归档到多个提供商的相册,这就不会因为某年某月某个巨头取消该服务而费心机。
这么想应该没错吧,但是想象一下手工把历史照片都归档到各个相册,这种劳动真的有点无聊了。所以,我老早就希望搞个自动上传照片到相册网站的脚本来玩玩,这两天按baidu相册的样子,搞出了一个。
# coding: gb2312require 'watir-webdriver'# 打开chrome driverbrowser = Watir::Browser.new :chromebegin# 登陆baidu相册首页browser.goto 'http://xiangce.baidu.com/'# 点击登陆browser.a(:id, 'userbar-login-btn').wait_until_presentbrowser.a(:id, 'userbar-login-btn').click# 输入用户名browser.input(:name, 'userName').wait_until_presentbrowser.input(:name, 'userName').send_keys('baidu账户')# 输入密码browser.input(:name, 'password').wait_until_presentbrowser.input(:name, 'password').send_keys('登陆密码')# 确定browser.input(:id, 'TANGRAM__PSP_8__submit').clicksleep 5browser.a(:text, '我的相册').wait_until_presentbrowser.a(:text, '我的相册').click# 进入我的相册后,目前会弹出一个对话框。也许以后会没有这个东东,到时需要取消这块代码browser.a(:text, '我知道了').wait_until_presentbrowser.a(:text, '我知道了').clicksleep 5browser.span(:xpath, "//div[@class='bt-upload-wrapper']/a/span").wait_until_presentbrowser.span(:xpath, "//div[@class='bt-upload-wrapper']/a/span").click# 为了简单化,每次都创建新相册browser.a(:text, '创建新的相册').wait_until_presentbrowser.a(:text, '创建新的相册').click# 新相册以test加上当前时间戳来命名,避免冲突browser.input(:name, 'input-album-name').wait_until_presentbrowser.input(:name, 'input-album-name').send_keys('test' + Time.now.to_i.to_s)browser.a(:text, '确认').wait_until_presentbrowser.a(:text, '确认').click# 收集需要上传的照片文件名列表list_photos = Dir.glob("E:/photos/*.gif") if list_photos.size == 0raise "指定目录无gif文件"end# 先指定一个照片文件,其余文件都通过继续上传来完成browser.file_field(:xpath, "//div[@id='filePicker']/div/input").wait_until_presentbrowser.file_field(:xpath, "//div[@id='filePicker']/div/input").value= list_photos[0]# 把剩余的照片上传,因为存在1次上传最多300张的限制,所以下面特别处理了,支持超过300张照片的上传browser.file_field(:xpath, "//div[@id='filePicker2']/div/input").wait_until_presentcurrent_selected_photo_count = 1list_photos[1..-1].each do |photo|current_selected_photo_count += 1if current_selected_photo_count > 300 # 目前baidu相册一次上传限制最多300张相片puts "已选择的文件数目达到300个,先上传一次"browser.div(:text, '开始上传').wait_until_presentbrowser.div(:text, '开始上传').clickupload_expected_timeout = 300 * 10 #按每张照片耗时10秒,计算完成300张照片上传的耗时# 在上传过程中,会出现“暂停上传”按钮,这就是我用来判断上传是否完成的标志browser.div(:text, '暂停上传').wait_while_present(upload_expected_timeout)# 有可能会出现个别照片上传失败,会提示重试。我这里先不处理这种场景了# 每次上传完成后,都会弹出一个对话框,可以选择返回相册,还是继续上传,我们还有更多照片上传,所以继续browser.a(:text, '上传更多照片').wait_until_presentbrowser.a(:text, '上传更多照片').clickcurrent_selected_photo_count = 1# 又回到前面的套路,先指定一个照片文件,其余文件都通过继续上传来完成browser.file_field(:xpath, "//div[@id='filePicker']/div/input").wait_until_presentbrowser.file_field(:xpath, "//div[@id='filePicker']/div/input").value= photoputs "指定上传#{photo}"nextendbrowser.file_field(:xpath, "//div[@id='filePicker2']/div/input").value= photoputs "指定上传#{photo}"end# 最后把剩下还没上传的照片一次上传,预防照片数目刚好是300整数,所以加多个判断,以下类似if current_selected_photo_count > 0browser.div(:text, '开始上传').wait_until_presentbrowser.div(:text, '开始上传').clickend# 如果还有没有上传的照片,就按照每张照片预留10秒耗时计算总耗时,否则预留总耗时为30秒upload_expected_timeout = current_selected_photo_count > 0 ? current_selected_photo_count * 10 : 30browser.a(:text, '确定,查看相册').wait_until_present(upload_expected_timeout)browser.a(:text, '确定,查看相册').clicksleep 1# 进入我的相册后,目前会弹出一个对话框。也许以后会没有这个东东,到时需要取消这块代码browser.a(:text, '我知道了').wait_until_presentbrowser.a(:text, '我知道了').clicksleep 10puts "上传成功"rescue => errorputs "出现异常:#{error}"puts "出现异常:#{error.backtrace.join('\n')}"ensurebrowser.close if browserend
0 0
- 【Watir Webdriver】自动化上传照片到百度相册
- iOS 上传照片到服务器 获取相册和拍照功能的照片 照片压缩上传
- 保存照片到相册
- IOS从相册上传照片
- watir-webdriver和watir区别
- Android调取系统相册和相机照片设置到ImageView并上传到服务器
- ruby自动化测试之watir试水--chrome打开百度搜索
- watir-webdriver 在线文档
- watir webdriver使用分享
- watir-webdriver相关知识
- watir&webdriver&QTP比较
- Watir-webdriver使用手册
- android照相机上传照片和相册
- Android拍照或相册获取照片上传
- 打开相册相机上传照片代码
- 照片保存到相册,并添加到自定义相册中
- iphone 保存图片到相册照片库
- ALAssetsLibrary---保存照片到指定相册
- Android利用百度定位SDK获取当前城市位置
- GetObject
- 4.1函数定义和调用
- 【iOS】Autosynthesized property警告解决方案
- Android中listview内容较多时拖动不流畅问题
- 【Watir Webdriver】自动化上传照片到百度相册
- leetcode Next Permutation
- 混淆的艺术-(苍井空变凤姐)Proguard源码分析(三)Proguard配置解析~上
- 添加文件到Sdcard出现Failed to push selection: Invalid argument问题
- 4.2 函数形参、实参、默认参数
- poj 3100 (zoj 2818)||ZOJ 2829 ||ZOJ 1938 (poj 2249)
- UITableView 滚动流程性优化
- 每日学习心得:$.extend()方法和(function($){...})(jQuery)详解
- PowerDesigner导出mysql脚本里包含视图