当页面加载时没有输入元素时,如何使用Capybara / SitePrism / Ruby附加文件?

时间:2017-12-20 16:45:02

标签: ruby capybara site-prism

我主要使用Ruby,Capybara和SitePrism的测试框架,直到现在我成功使用'attach_file(input_element,File.path)'方法。

我现在已经转移到另一个项目,他们已经有了这个页面,其中有一个“上传按钮”,但在第一次加载时页面中没有任何“输入”元素(检查源代码,没有隐藏元素或者,即“输入”根本不出现在页面中。然后发生了什么,当用户点击“上传”按钮时,会出现一个窗口弹出窗口,他们可以选择他们的文件,当他们选择那个时,似乎有一些javascript正在进行(我看到了与之相关的事情) knockout.js,虽然不是100%确定是否被调用了),并且在那一点上,代码在页面中创建了一个全新的“input”元素,原来并不存在。

您知道是否有办法实现这些旅程的自动化?或者这个问题听起来很熟悉,以便我可以研究一下我能做些什么呢?

谢谢!

1 个答案:

答案 0 :(得分:0)

如果页面上确实没有input元素(仔细检查,因为如果使用knockout.js它不太可能),并且当用户通过JS单击上传按钮时会添加它,那么就会有没有“干净”的方式来测试与Capybara。唯一的方法是通过按下按钮确定要调用的JS,并使用execute_script调用在页面上创建正确的input元素所需的JS方法,然后附加到那。