Ruby:从控制台中提取上次下载的特定文件类型的文件并打印文件名
我正在尝试运行一个自动化测试,让它下载一个文档并将其文件名打印到控制台中。我无法帮助它找到最新的文档。我在Firefox中使用ruby和cucumber。下面是我的特定step def语言,用于提取文件,但不完全是最新的文件: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)
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,这样就可以得到最近文件的文件名。这一行就是你所需要的一切。在答案中添加了屏幕截图,这样你就可以看到结果了。