选择文件机器人框架不上传文件

问题描述:

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

enter image description here

林不知道如果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}变量包含OS完整路径到该文件,并且该文件在该位置。作为验证点,我尝试将文件名更改为不存在的文件名,并且机器人抛出错误,指出数据不可用。

有没有人遇到过这个?

+0

我没有看到附件。 –

+0

感谢Bryan,几分钟前意识到!刚刚更新了截图。 –

+0

您正在使用哪种浏览器/驱动程序?我使用最新的Chrome浏览器驱动程序和Chrome浏览器57.x,选择了文件关键字。 – ponkape

经过一些额外的挖掘,事实证明,在这种情况下,<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"; 

enter image description here

我之前遇到过同样的问题,我尝试了多种方法,比如模拟关键字操作和在文件上传对话框中输入文件路径,使用Choose File Keyword,AutoIT Library for Robot Framework。 1)如果你打算在本地机器上运行你的测试,我会说使用pyautogui(对于Python)和Robot Class(对于Java),并使用Tab/Enter/Key Press方法来完成这项工作。 2)如果您打算在远程机器上运行测试,也就是VM,请在RemoteMachine/VM上设置AutoIT并使用AutoIT库for Robot Framework。

+0

感谢您的评论Tanmay - 唉无论是开发环境和无头虚拟机环境都是Linux系统 - 最后我检查,AutoIT不是Linux友好的,除非在葡萄酒程序中运行,并且所需的功能听起来像它不能很好地工作办法。 –