我正在使用 vb.net 在 Chrome 中使用 Selenium 进行网站自动化,我想从没有下载按钮直接 URL 的网站下载文件(从 JavaScript 触发下载)如何在 selenium 中执行此操作.net(C# 或 vb.net)?
如果不可能,我希望在用户单击下载按钮时收到通知并控制设置下载路径和下载完成事件等内容。
如果无法设置下载路径,那么至少我想在下载完成后获取下载路径。 如何实现我的要求?
请帮助我。
最佳答案
下载可能是一项繁琐的任务,具体取决于您使用的浏览器。幸运的是,您使用的是 Chrome,这应该不会太麻烦。
首先,您需要找到开始文件下载的按钮。
driver.FindElement(<locator here>).click()
现在下载应该已经开始了。但是,下载可能需要一段时间才能完成。因此,您必须轮询下载文件夹中是否有新文件(如果您知道文件名,则轮询特定文件)。您可以在创建驱动程序时指定下载文件夹。
var options = new ChromeOptionsWithPrefs();
options.prefs = new Dictionary<string, object>
{
{ "download.default_directory", "path/to/downloads/folder" }
};
RemoteWebDriver driver = new ChromeDriver("path/to/driver", options);
现在您可以通过执行以下操作找到此文件夹中的最新文件
var directory = new DirectoryInfo("path/to/downloads/folder");
var myFile = directory.GetFiles()
.OrderByDescending(f => f.LastWriteTime)
.First();
在循环中,您可以将此文件名与刚刚下载的文件的文件名进行比较。在此循环中添加超时,如果未在预期时间内下载,您的测试可能会失败。
注意:我不熟悉这种语言,因此某些代码可能无法完全运行,但它会给您带来想法
关于c# - 使用 selenium 下载没有直接 URL 的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37585382/