使用 Selenium IDE 上传文件(不是 selenium WD/RC)

File upload with Selenium IDE (not selenium WD/RC)

我在堆栈中看到了一些与此主题相关的问题,并且与其他问题一样,答案似乎总是包含 RC/WD 解决方案。这是针对 SELENIUM IDE,而不是 WD/RC 实现。

我知道我们只需要设置存储文件路径的元素的值,但我发现这样做的方式存在冲突。

我的存储文件路径字符串的元素在检查器下看起来像这样:

输入类型="file"名称="StdConditionsFile"id="pdfApp"

如果我得到元素的 Xpath,它看起来像这样:

//*[@id="pdfApp"]

我正在使用以下代码分配 file.path:

但我运气不好。我尝试使用元素的名称、xpath 和 id,但从未分配 file.path。

更新: 我正在寻找一些进展,但它可能会误导我是否真的可以做到这一点。我没有使用 'type' 作为命令,而是寻找另一个替代项并找到了 'setElementAttribute'。如果我将该命令与 upload.element 的 ID、名称或 XPath 一起使用,我可以看到我实际上是在设置该值,但是这有一个问题。

在我 运行 这 3 个命令中的任何一个之后,我在检查器中看到了这个:

输入名称="StdConditionsFile" id="pdfApp" 值="C:\full\path\of\file\filename.pdf" style="" type="file"

在运行执行命令之前是这样的

输入名称="StdConditionsFile" id="pdfApp" style="" type="file"

但是当您查看 DOM 属性时,名为 'value' 的属性为 "" 或 null。

有人真的成功了吗?

我可以通过使用 AutoIt 来做到这一点。我在 AutoIt 中创建了一个脚本,我必须在启动 Selenium IDE 中的 tests/testsuite 之前启动它。 AutoIt 脚本会在寻找 "File Upload" window 时循环。具体步骤是:

  1. 创建循环查找名为 "File Upload"
  2. 的 window 的 AutoIt 脚本
  3. 启动了 AutoIt 脚本
  4. 启动了 Selenium IDE 测试脚本
  5. Selenium IDE 脚本可以完成它的工作,单击网站页面上的 "Browse" 按钮并暂停。
  6. 循环的 AutoIt 脚本会看到在上一步中从 Selenium IDE 生成的 "File Upload" window 并在对话框中输入上传文件的路径 window(浏览 -> 文件上传)
  7. AutoIt 然后会点击 "Ok" 并关闭上传 window
  8. Selenium IDE 脚本会停止并单击网站上的 "Upload" 按钮。
  9. 文件已上传! - 检查!

Testing/Troubleshooting: 我在 Selenium WD 和 Selenium IDE 中使用了完全相同的命令,其中我使用 "Sendkeys" 将文件路径输入到网站上的上传控件中。 Selenium IDE 会说命令成功,但您从未看到网站更新并显示路径,就像 WD 那样。因此,当您单击上传按钮时,不会上传任何文件。我在多台机器上使用 "Type" 尝试过这个。这也没有用,Selenium IDE 中的命令显示为通过。我还使用了在 IDE 中传递的 setElementAttribute 但没有用。其他用户说这项工作有效,但我还没有看到它并且 AutoIt 肯定有效。