【问题标题】:Selenium webdriver how to do file upload with ng-click="upload('files')"Selenium webdriver 如何使用 ng-click="upload('files')" 进行文件上传
【发布时间】:2015-07-09 12:01:12
【问题描述】:

我正在尝试看看这是否可能 - 当 HTML 代码不是时自动上传文件

< input type='file' >

而是一个链接

<a ng-click="upload('files')"> File Upload </a>

单击此链接时,它会自动打开一个文件选择器来选择您要上传的文件。 问题是,它不包含我可以找到并使用 webdriver.send_keys('/Users/myname/testfile.txt') 的 INPUT type='file' 元素。

我该如何尝试让 selenium webdriver 来处理这个文件上传?

非常感谢任何能指导我找到解决方案的帮助。

【问题讨论】:

  • 您的应用程序看起来像一个 angularjs 应用程序。你不会用量角器吧?
  • 恐怕解决方案将取决于upload() 函数实现。你能提供吗?谢谢。
  • 像这样的上传链接的公开演示也有助于提供可靠的解决方案。
  • 是的,另外看起来点击源代码中的链接后会出现文件上传。这就是为什么我们需要知道点击后会发生什么:)
  • 它实际上是在调用浏览器插件,这就是我找不到该元素的原因。对于这种情况,我认为像 AutoIT 这样的外部可执行文件是唯一可能的解决方案。

标签: javascript ruby angularjs selenium


【解决方案1】:

请参阅此帖子here。我也有这个问题,当您在 HTML 中没有输入选项时,AutoIt 是上传文件的答案。

这是AutoIt 的链接。他们有一些教程可以帮助您入门。

【讨论】:

    【解决方案2】:

    上次我需要这个 WebDriver 时无法与对话框交互,因为对话框是操作系统的域,而不是网页。

    一种选择是完全跳过文件对话框并发出 POST/GET/PUT,但这需要更高级的网站知识以及如何构建请求的理解。

    我在那个位置所做的是创建一个辅助程序可执行文件来处理对话框,所以我在 Selenium 脚本的中间调用它,就在生成对话框之后。

    这里有一个使用 Java 和 AutoIT 的最后一种方法的示例:http://www.automationtesting.co.in/2009/07/selenium-handle-dialogs.html

    【讨论】:

    • 我在谷歌搜索解决方案时看到了 autoIT,但它似乎只用于 Windows。 Mac 或 Linux 有类似的东西吗?
    • 在同一个网站上有一个使用 AppleScript for Mac 的示例:automationtesting.co.in/2009/08/…
    • 谢谢,我认为这是可行的解决方案。
    猜你喜欢
    • 2015-12-11
    • 2016-02-26
    • 2012-11-08
    • 2015-12-23
    • 1970-01-01
    • 2023-03-06
    • 1970-01-01
    • 1970-01-01
    • 2016-11-09
    相关资源
    最近更新 更多