找出通过watir-webdriver保存的文件名

时间:2012-02-22 20:33:16

标签: ruby firefox download watir-webdriver

鉴于Firefox现在的工作方式,指定另存为文件名是不可行的,无论哪种链接,重定向或mime类型watir-webdriver遇到完全非交互/非GUI方式

找出刚刚保存的文件名的简单方法是什么?

希望比“检测目录中创建的最新文件”更可靠的东西,因为我有独立的进程必须同时使用同一个文件夹,包括其他webdrivers。

使用此方法在配置文件中快速下载已设置(尽可能使用许多预见的文件类型):Firefox 4 with watir webdriver: Need help using helperApps.neverAsk to save CSV without prompting

在我的设置中,Bash脚本调用Ruby来执行watir-webdriver的操作,启动浏览器等,然后退出到Bash进程。我更喜欢Ruby学习它刚刚保存的文件名,因为它的env它最清楚我想要重命名文件,而不是让它留给一些怪异的lsof / strace来计算验尸。但无论有效。

更新

由于答案似乎并非如此,任何人都可以建议使用简短的Ruby代码找到在给定目录时保存的最新文件,检查它是否确实是在最后2秒内写入的,并将其重命名为我的变量{{1} } .csv?

2 个答案:

答案 0 :(得分:2)

如何在测试运行开始时使用当前日期时间作为名称的一部分创建目录。如果稍后某些操作需要知道放置文件的位置

,您也可以将其写入环境变量

然后,当必须写出文件时,请使用测试或步骤的名称,或者其他可以让您将其追溯到写出文件的内容。或者只是一个递增的数字,并让它创建某种日志文件,告诉你每个数字是什么,或创建它的是什么等。

答案 1 :(得分:2)

试试这个,但用您的目录名

替换Dir.pwd
f = Dir.entries(Dir.pwd).reject{|f|File.ftype(f)!='file'}.sort_by{|f| File.mtime(f)}.last
File.rename(f, "#{$acctno}.csv") if Time.now-File.mtime(f)<2