无法在ruby watir中上传合理大小的文件

时间:2014-04-08 10:35:10

标签: ruby watir

我正在尝试将文件上传到我们的控制台,该文件工作正常,但较大文件的相同代码会引发超时错误。当我上传文件时,我断言进度条出现,表明文件仍在上传。

以下是上传文件的代码:

Then (/^I upload with id "(.*?)" file present in the location "(.*?)"$/) do |id_name,filepath|
  id_name = config[id_name]
  filepath.split(',').each do |filepath|
  @browser.file_field(:id => id_name).set(filepath)
  @browser.div(:id =>"progressBar").wait_while_present
end 

上传文件时出现错误Net :: RunTimeout。我试图等到文件上传后执行我的下一个命令,但不知何故我收到超时错误。

我附上了html标签:

<div id="progressBar" class="no_margin ui-progressbar ui-widget ui-widget-content ui-corner-all" role="progressbar" aria-valuemin="0" aria-valuemax="100" aria-valuenow="33"></div>

2 个答案:

答案 0 :(得分:1)

默认情况下,行:

@browser.div(:id =>"progressBar").wait_while_present

只会等待60秒。我猜你的问题就在这里 - 也就是说这需要超过60秒。

Element#wait_while_present方法可以使用可选参数来指定以秒为单位的等待时间。您可以尝试进行更大的超时,例如3分钟:

@browser.div(:id =>"progressBar").wait_while_present(180)

答案 1 :(得分:0)

场景1

您可以尝试手动上传该特定文件,并查看您的给定超时时间是否足够:

wait_while_present(seconds)

场景2

观察运行脚本,观察文件上传时发生的情况,文件是否在给定的秒内正确上传,上传进度条消失了吗?如果尝试更改除div(:id =&gt;&#34; progressBar&#34;)之外的元素位置,请执行以下操作:

@browser.div(:id =>"progressBar").wait_while_present(seconds)