【问题标题】:Choose File Robot Framework not uploading file选择文件机器人框架不上传文件
【发布时间】:2017-09-16 08:24:41
【问题描述】:

我正在开发一个使用 choose file 机器人框架关键字上传文件的场景。测试运行和选择文件执行时,它会击中<input type="file">元素的定位器,UI在页面底部显示一个红色框(请参阅附件),但文件未上载。

我不确定 UI 是否不知道如何处理上传,或者我的代码中是否有错误:

choose file  xpath=/html/body/div/div/div/div[2]/div/div/div/div/div/div/div/div/div[1]/div[1]/div[2]/div/span  ${dataDir}studentSAT.csv

${dataDir} 变量包含文件的操作系统完整路径,文件位于该位置。作为验证点,我尝试将文件名更改为不存在的文件名,但机器人会抛出一个错误,指出数据不可用。

有人遇到过这种情况吗?

【问题讨论】:

  • 我没有看到附件。
  • 谢谢布莱恩,几分钟前就意识到了!刚刚更新了截图。
  • 您正在使用哪个浏览器/驱动程序?我很幸运使用最新的 Chrome Webdriver 和 Chrome 57.x 选择文件关键字。
  • 在我的本地系统 (CentOS 7) 上,我使用的是 Native FF 浏览器和相关的驱动程序。我曾尝试使用 Chrome Webdriver 和 Chrome 59.x,但它们根本不想工作,而且我在 FF 产品上走得更远。在 AWS 服务器 (Ubuntu) 上,我使用 Mozilla Geckodriver,因为测试使用 XVFB 无头运行。我还没有在那个平台上尝试过它们,因为我仍处于开发的设计/调试阶段。
  • 您确定${dataDir} 包含结束路径分隔符?例如,它等于:/home/testuser/datadir/ - ?否则,您引用的内容类似于 /home/testuser/datadirstudentSAT.csv

标签: robotframework filechooser


【解决方案1】:

我之前遇到过同样的问题,我尝试了多种方法,例如模拟关键字操作并在文件上传对话框中输入文件路径,使用选择文件关键字,机器人框架的 AutoIT 库。

1) 如果您打算在本地机器上运行测试,我会说使用 pyautogui(用于 Python)和机器人类(用于 Java)并使用 Tab/Enter/Key Press 方法来完成这项工作。

2) 如果您打算在 Remote Machine aka VM 上运行测试,请在 RemoteMachine/VM 上设置 AutoIT 并使用 AutoIT 库 For Robot Framework。

【讨论】:

  • 感谢您的评论 Tanmay - 唉,开发环境和无头 VM 环境都是 Linux 系统 - 最后我检查了,AutoIT 不是 Linux 友好的,除非在 wine 程序中运行,并且所需的功能听起来像那样效果不好。
【解决方案2】:

经过一些额外的挖掘,事实证明在这种情况下,<input type=file> 元素是不可见的。左下角的红色框是浏览器尝试处理传递给它的文件,而没有与不可见元素交互的已知方式。 将元素显示属性从 'style.display = "none"` 更改为 'style.display = "block"' 允许元素在屏幕上可见并被选中。

在尝试传递 .csv 文件之前,我实现了一个“执行 javascript”关键字步骤,现在它运行良好。

代码:

execute javascript window.frames[0]; document.querySelector( "input[name='file-uploader']" ).style.display = "block";

【讨论】:

    猜你喜欢
    • 2019-01-30
    • 2013-02-13
    • 2017-09-10
    • 2021-03-21
    • 2020-03-16
    • 2019-06-22
    • 2020-08-30
    • 2021-07-03
    • 2016-05-19
    相关资源
    最近更新 更多