如何检查Selenium WebDriver下载的文件?

2024-01-08

我使用 C# 在 Selenium webdriver 中编写了一个自动化测试,其中一个步骤需要从服务器下载 XLSX 文件。如何验证文件是否已成功下载并获取其名称?

Regards


我通过以下源代码找到了解决方案:

string currentPage = Browser.Current.Url;
string userPath = Environment.GetFolderPath(Environment.SpecialFolder.UserProfile);
string downloadPath = Path.Combine(userPath, "Downloads");

DirectoryInfo dirInfo = new DirectoryInfo(downloadPath);

if (!dirInfo.Exists)
{
     dirInfo.Create();
}

int directoryFiles = dirInfo.EnumerateFiles().Count();

string elementXpath = "//div[@id='myDiv']/div/div/div[@class='atalhos']/a[1]";

bool isFirefox = (Browser.Current as FirefoxDriver) != null;
bool isChrome = (Browser.Current as ChromeDriver) != null;

IWebDriver browserDriver = null;

if (isChrome)
{
    ChromeOptions chromeOptions = new ChromeOptions();
    chromeOptions.AddUserProfilePreference("download.default_directory", downloadPath);
    chromeOptions.AddUserProfilePreference("disable-popup-blocking", "true");

    browserDriver = new ChromeDriver(chromeOptions);
}
else if (isFirefox)
{               
    FirefoxProfile profile = new FirefoxProfile();                
    profile.SetPreference("browser.download.folderList", 2);                
    profile.SetPreference("browser.helperApps.neverAsk.saveToDisk", "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");

    browserDriver = new FirefoxDriver(profile);
}

browserDriver.Navigate().GoToUrl(currentPage);

WebDriverWait wait = new WebDriverWait(browserDriver, TimeSpan.FromSeconds(15));
wait.Until(ExpectedConditions.ElementIsVisible(By.XPath(elementXpath)));

IWebElement elemento = browserDriver.FindElement(By.XPath(elementXpath));

elemento.Click();

Thread.Sleep(7000);

dirInfo = new DirectoryInfo(downloadPath);

int currentFiles = dirInfo.EnumerateFiles().Count();

Assert.Greater(currentFiles, directoryFiles);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何检查Selenium WebDriver下载的文件? 的相关文章

随机推荐

  • 使用 wpf 4 打印的最佳方法

    你好 我需要能够从我的 wpf 应用程序进行打印 我只是想打印交易收据 我发现使用 PrintDialog pDialog new PrintDialog pDialog PrintVisual new Receipt 交易名称 我的商店
  • 有没有可能的方法将指纹生物识别设备连接到网站..?

    有没有可能的方法将指纹生物识别设备连接到网站 我创建了一个基于网络的 ERP 系统 根据客户要求 我需要集成指纹记录系统 我的网站是用 C 和 angular2 开发的 我尝试了很多 sdk 但没有任何效果符合我的预期 它唯一可行的方法是使
  • 如何在 Scrapy .csv 结果中获取双引号

    我在使用 Scrapy 的输出中遇到引用问题 我试图废弃包含逗号的数据 这会导致某些列中出现双引号 如下所示 TEST TEST TEST ON TEST TEST 2 449 000 4 735 Sq Ft 6 Bed 5 1 Bath
  • 如何使用 jest/enzyme 模拟 multer 以使用 axios 后模拟调用进行文件上传

    我正在测试我的快速路由器axios调用后到后端 我正进入 状态500响应而不是 200 不知道如何嘲笑multer有效地 对此有什么想法吗 谢谢 路线 jsx const axios require axios const router e
  • 颤动底部被无限像素溢出

    我面临这个问题 当我将某个小部件添加到列的子项中时 我不断遇到 底部溢出无限像素 的问题 现在这就是添加名为的新小部件之前的样子countdown 以下是我添加后发生的情况countdown 这是屏幕下半部分的代码 我在其中添加countd
  • Android动画中的pivotX和pivotY是什么意思? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 这两个术语出现在很多地方 但它们在 Android 动画上下文中到底意味着什么 枢轴X和枢轴Y是动画的中心点 例如 如果你想做放大动画 你
  • iOS 8 Swift Xcode 6 - 设置顶部导航栏背景颜色和高度

    我到处查看并测试了 Stack 上发布的所有代码片段 但没有任何东西对我有用 因为我需要它工作 我只是想设置 导航栏高度 导航栏背景颜色 RGB 导航栏居中徽标 我正在使用 iOS8 Xcode 6 和 Swift 非常感谢您的明确答复 这
  • Tmux:如何使用选择树过滤当前会话窗口并格式化输出以显示不带主机名的窗口名称

    我想配置tmux choose tree to 仅显示我当前会话的窗口 但与此同时我想保留我当前使用的格式 不带主机名的窗口名称 我当前的设置是 bind key w choose tree F window name 看起来像这样 我发现
  • 将删除导航栏边框转换为 swift

    我正在尝试快速删除导航栏边框 这是通过在 Objective C 中使用以下代码来完成的 UINavigationBar appearance setShadowImage UIImage alloc init UINavigationBa
  • 使用超类静态方法获取子类的实例

    我有一个超类 我想转发一个名为的静态方法getInstance 到所有子类 创建子类的实例时 我然后在超类中注册该实例 可能使用哈希表 其中键基于getClass 然后 我希望使用前面提到的静态方法 getInstance 其中超类方法将返
  • PHP 中使用特殊字符对数组进行排序

    我有一个包含西班牙语语言名称的数组 lang ko coreano korean lang ar rabe arabic lang es espa ol spanish lang fr franc s french 我需要对数组进行排序并维
  • 跳过配置文件“main/binary-i386/Packages”的获取

    下午好 请告诉我我做错了什么 我刚在电脑上安装了Linux Ubuntu 但仍然对它一无所知 我尝试安装 PostreSQL 和 pgAdmin 我按照这个视频教程安装的https www youtube com watch v Vdzb7
  • Perl:打印传递给子例程的数组名称

    我将一个数组和一个标量传递给一个函数 以检查该值是否属于数组的一部分 如果它不是数组的一部分 则将其推送到数组 出于参考目的 它必须显示的是在推动它时必须显示数组的名称 这是我的代码 use v5 10 1 use strict use w
  • Angular2 Rxjs 404错误

    尝试启动 Angular2 应用程序时出现以下错误 Failed to load resource the server responded with a status of 404 Not Found angular2 polyfills
  • 文件写入在程序流程中应该发生时却没有发生

    这对我来说不是一个新问题 从 C 到 PERL 再到 Windows Mobile Windows XP 和其他 Windows 版本上的 Python 这个问题一直存在 让我心烦意乱 现在 在我最新的脚本中 这种情况再次发生 更具体地说
  • 使用 Expo 时如何忽略 fetch() 调用中的 SSL 证书问题?

    似乎反应原生无法在 fetch 调用期间禁用 SSL 验证 有人提到here https stackoverflow com questions 51130878 how to disable ssl check in react nati
  • 使用小数分隔符和可选的千位分隔符匹配数字的正则表达式

    我需要使用小数分隔符和千位分隔符 可选 来验证数字是否有效 我需要一个正则表达式 因为当前的代码不是由我完成的 使用的正则表达式无法正常工作 我的目标是修复它 因此以下组合是合法的 使用 作为小数点分隔符和 作为千位分隔符 10000 10
  • 如何在 Spring DM 中获取 BundleContext?

    我刚刚接触 Spring DM 我想访问 Bundlecontext 我的问题是我有一个包含 Activator 的捆绑包 但它没有 xml 配置文件 我无法触及这个捆绑包 那么我需要访问 BundleContext 和 serviceRe
  • CSS/Flexbox:仅显示容器中容纳的尽可能多的项目

    我的目标是构建一个面包屑样式组件 其中 显示项目的水平列表 每个项目都有最大宽度 如果宽度不足以显示项目 则从列表开头省略项目 优先考虑last列表中的项目 所有布局仅通过 CSS 实现 没有 JS 调整大小观察器等 Flexbox 似乎是
  • 如何检查Selenium WebDriver下载的文件?

    我使用 C 在 Selenium webdriver 中编写了一个自动化测试 其中一个步骤需要从服务器下载 XLSX 文件 如何验证文件是否已成功下载并获取其名称 Regards 我通过以下源代码找到了解决方案 string current