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

发布于 2025-01-08 08:34:35 字数 828 浏览 1 评论 0原文

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

有什么简单的方法可以找出刚刚保存的文件的名称?

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

使用此方法在配置文件中已设置无提示下载(尽可能使用许多预见的文件类型): 带有 watir webdriver 的 Firefox 4:需要使用 helperApps.neverAsk 的帮助来保存 CSV,而不需要 在我的设置中,Bash 脚本调用

Ruby,Ruby 执行 watir-webdriver 的操作,启动浏览器等,然后退出回到 Bash 进程。我希望 Ruby 能够立即了解它刚刚保存的文件名,因为它的 env 最清楚地知道我想如何重命名该文件,而不是将其留给一些令人毛骨悚然的 lsof/strace 找出事后分析。但不管怎样都行得通。

更新

由于答案似乎并非如此,任何人都可以建议简短的 Ruby 代码来查找给定目录中保存的最新文件,检查它是否确实是在过去 2 秒内写入的,并将其重命名为我的变量 $acctno< /代码>.csv ?

Given that with the way Firefox now works, it's somewhat infeasible to specify the Save As filename no matter what kind of link, redirect or mime type watir-webdriver encounters in a completely non-interactive/non-GUI way.

What might be a simple way to find out the name of the file that's just been saved?

Hopefully something more reliable than "detect latest file created in directory" since I have independent processes necessarily using the same folder simultaneously, including other webdrivers.

Promptless download already setup (as much as possible using many foreseen file types) in profile using this method: Firefox 4 with watir webdriver: Need help using helperApps.neverAsk to save CSV without prompting

In my setup a Bash script calls Ruby which does the watir-webdriver stuff, launches the browser etc. then exits back to the Bash process. I'd prefer if Ruby learned the filename it just saved right away, since with its env it knows best how I want to rename the file, rather than leaving it to some spooky lsof/strace to figure out post mortem. But whatever works.

UPDATE

Since the answer seems to be not really, can anyone suggest short Ruby code that finds the latest file saved given a directory, checks if indeed it was written within the last 2 seconds, and renames it to my variable $acctno.csv ?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

无语# 2025-01-15 08:34:35

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

Try this, but replace Dir.pwd with your directory name

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
野侃 2025-01-15 08:34:35

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

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

what about creating a directory using the current date-time as part of the name when the test run starts. You could also write this out to an environment variable if some later action needs to know where the files were put

Then when something has to write out a file use the name of the test or step, or something else that lets you trace it back to what wrote out the file. or just an incrementing number and have it create some kind of log file that would tell you what each number is, or what created it etc.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文