【问题标题】:finding out name of file Firefox saved via watir-webdriver找出通过 watir-webdriver 保存的文件名 Firefox
【发布时间】:2012-02-22 20:33:16
【问题描述】:

鉴于 Firefox 现在的工作方式,指定 另存为 文件名有点不可行,无论 watir-webdriver 遇到什么样的链接、重定向或 mime 类型 - 交互式/非 GUI 方式.

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

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

使用此方法在配置文件中快速下载已设置(尽可能使用许多可预见的文件类型):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 秒内写入的,并将其重命名为我的变量 $acctno。 csv ?

【问题讨论】:

  • 我认为您目录中的最新文件是目前唯一的方法。您只需确保为每个网络驱动程序创建一个新的下载目录(使用 GUID 或类似名称),以确保您没有使用相同的文件夹并获取错误的文件。
  • 好的。修改 Ruby 解决方法的问题。

标签: ruby firefox download watir-webdriver


【解决方案1】:

试试这个,但是用你的目录名替换 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

【讨论】:

  • 太棒了!只有我将mtime 切换到ctime,因为在同一个目录中正在积极更新预先存在的文件——保持它们的modtimes 新鲜,并且因为我已经知道我的目标网页总是生成包含时间戳的新的唯一文件名。所以我打算重命名覆盖mv -f。谢谢!
  • 我不确定最佳时间属性是什么 - 很高兴 ctime 成功了。
  • 这给了我无法解释的in 'ftype': No such file or directory - SomeOldUnrelatedSimpleFile.png (Errno::ENOENT) 致命错误,所以我从get_last_modified 切换到f = get_last_created("myDir")
  • 我在那个版本上也很恶心或错误,我自己制作了:def get_last_created(dir) return File.open(dir +'/'+ IO.read("|ls -A1c " + dir).split.first, "r") enddef get_last_modified(dir) return File.open(dir +'/'+ IO.read("|ls -A1t " + dir).split.first, "r") end 这些使用 ls 但只是工作。原生 Ruby 方法在(暂时)损坏的符号链接或仅短暂存在的文件(在 ruby​​ 的数组构建和排序/比较条目之间)不断出现问题,因为我的文件夹正在持续同步和监控。花了这么多时间才弄明白。
  • 在我的电脑上工作(呵呵)。您是否考虑过重写调用并在源中发送(带有问题描述)?这可能会拯救其他一些灵魂。
【解决方案2】:

如何在测试运行开始时使用当前日期时间作为名称的一部分来创建目录。如果稍后的操作需要知道文件的放置位置,您也可以将其写入环境变量

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

【讨论】:

  • 当然,或者我在想,当我需要创建隔离文件夹时,以该 Ruby 会话的 PID 而不是时间戳命名,因为它更容易跟踪/抓取并且仍然非常独特。我的框架已经非常了解它的进程树,用于清理目的和数据处理隔离
猜你喜欢
  • 1970-01-01
  • 2013-04-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-01-18
  • 2012-03-17
  • 2015-12-24
  • 1970-01-01
相关资源
最近更新 更多