Ruby:从控制台中提取上次下载的特定文件类型的文件并打印文件名

Ruby:从控制台中提取上次下载的特定文件类型的文件并打印文件名,ruby,testing,selenium-webdriver,automation,cucumber,Ruby,Testing,Selenium Webdriver,Automation,Cucumber,我正在尝试运行一个自动化测试,让它下载一个文档并将其文件名打印到控制台中。我无法帮助它找到最新的文档。我在Firefox中使用ruby和cucumber。下面是我的特定step def语言,用于提取文件,但不完全是最新的文件: When(/^I can see the file name of download pdf from the (.+) directory displayed on the console screen$/) { |path| Dir.foreach(path)

我正在尝试运行一个自动化测试,让它下载一个文档并将其文件名打印到控制台中。我无法帮助它找到最新的文档。我在Firefox中使用ruby和cucumber。下面是我的特定step def语言,用于提取文件,但不完全是最新的文件:

When(/^I can see the file name of download pdf from the (.+) directory displayed on the console 
screen$/) { |path| 
 Dir.foreach(path) do |fname|
if fname.include?(".pdf")
  @file_name = fname
  break
end
结束 放置@file\u名称 }

我试着听从邮报的建议。我现在根本不需要显示文档。以前我会得到最初下载的文档,没有后续的文档。代码-

当/^我可以从控制台屏幕上显示的“.+目录$/{|路径”中看到下载pdf的文件名| Dir.globpath.max_by do | fname | File.mtimefname 目录foreachpath do | fname| 如果fname.include?.pdf @文件名=fname 打破 终止 终止 放置@file\u名称 } Dir.glob*.pdf.max_by{| f | File.mtimef} 归功于:


这回答了你的问题吗?您可能希望将end_与“.pdf”一起使用,因为名为hacker.pdf.exe的文件将被误解为pdf。我无法使其完美工作,因此在下载之前添加了一行。。当/^我在下载新的PDF$/do FileUtils.rm_rfDir.glob'C:/downloads/*.{PDF,PDF}'之前清除所有PDF时,我对我的帖子进行了编辑。评论有问题。您不需要在块中筛选.pdf。块应该只返回mtime,然后转到max_by,这样就可以得到最近文件的文件名。这一行就是你所需要的一切。在答案中添加了屏幕截图,这样你就可以看到结果了。