【问题标题】:How to handle Windows file upload in .Net core using Selenium?如何使用 Selenium 在 .Net 核心中处理 Windows 文件上传?
【发布时间】:2020-08-16 10:46:28
【问题描述】:

我是 C# 世界的新手,我想知道如何在 .Net 核心项目中使用 Selenium 自动执行 Windows 文件上传表单,因为它不支持 AutoIt。

【问题讨论】:

  • 第一个选项是在某些网站中,您可以使用 .sendKeys() 方法在文本框中传递要上传的文件的路径。第二个选项是您可以通过使用 JavaScriptExecutor 类设置 value(或类似)属性来传递要上传的文件的路径。第三种选择是在 Java 中使用 Robot 类。也通过这个link
  • Sendkeys 在我的场景中不起作用,因为我必须先单击该按钮,然后出现弹出窗口。你能给我一个例子,说明如何使用 JavaScriptExecutor 类来完成。
  • 手动选择要上传的文件后分享页面HTML代码的sn-p。
  • 嗨,Alok,由于我公司的安全政策,我无法分享实际代码,但该功能与 Gmail 的附加功能非常相似。因此,在创建新邮件时,如果您单击附加按钮,它会将您带到文件上传窗口。我正在寻找一种方法来自动化这种行为。
  • 即使我在网上也找不到一个例子给你看,对不起。会继续寻找。就像@Dazed 建议的那样,您需要注意在选择要上传的文件之前和之后的 HTML 代码更改。你会在那里找到你的答案。目前我认为Java的Robot Class也可以用来解决这个问题。

标签: selenium-webdriver .net-core automation


【解决方案1】:

Zehra - 这实际上取决于您想要模拟用户功能的精确程度。通常,您单击一个按钮会打开一个 Windows 对话框,您可以在其中找到您的电脑/手机上的文件。由于这实际上不是测试应用程序,只是一个 Windows 功能,所以我只使用发送键。如果您想获得更精确的信息,可以查看 AutoIT,但我建议您只发送密钥。

设置文件的位置。

 string filePath = @"C:\MyFiles\Test.jpg";

然后找到文件上传的输入路径。

 driver.FindElement(By.XPath("//div[@class='FileUploadInput']")).SendKeys(filePath);

如果您有用于上传过程的微调器或栏,我会等到该元素不再可见后再继续。

作为一个例子 - 去这里 - https://www.w3schools.com/jsref/tryit.asp?filename=tryjsref_fileupload_get

在示例中,如果您查看“选择文件”元素,它看起来像:

<input type="file" id="myFile">

然后你会这样做:

string filePath = @"C:\MyFiles\Test.jpg";
driver.FindElement(By.Id("myFile")).SendKeys(filePath);

【讨论】:

  • 嗨 Dazed,SendKeys 在我的场景中不起作用,因为我没有可以传递文件路径的文本框。我必须首先单击按钮,然后弹出窗口,我必须在其中发送文件名。 .Net Core 不支持 AUTOIT。
  • 您本身并没有发送到文本框。您需要找到文件上传的输入元素。上传都是在幕后完成的。您可以发布上传区域的 html 标记吗?
  • 嗨 Dazed,由于我公司的安全政策,我无法分享实际代码,但该功能与 Gmail 的附加功能非常相似。因此,在创建新邮件时,如果您单击附加按钮,它会将您带到文件上传窗口。我正在寻找一种方法来自动化这种行为。
  • 它们几乎都一样。如果您查看 gmail 上传区域,您会看到: 这是文件的输入,因此您可以使用 xpath= //input[@name='Filedata'] 并使用 sendkeys 发送路径,就像我向您展示的那样在我的回答中。这将为您上传文件。有道理?所以对于 gmail 你会使用 string filePath = @"C:\MyFiles\Test.jpg"; driver.FindElement(By.Xpath("//input[@name='Filedata'] ")).SendKeys(filePath);
  • 嗨@Dazed你为什么在字符串filePath = @"C:\MyFiles\Test.jpg"中使用'@';
猜你喜欢
  • 2012-06-30
  • 1970-01-01
  • 1970-01-01
  • 2018-08-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-09-19
相关资源
最近更新 更多