我使用的是ChromeDriver 2.25; Watir 6.0.1和Chrome v.55
我有以下问题:
irb(main):006:0> browser.file_field(:id=>'filesUploader').set ("C:\\files\\test.PNG")
This code has slept for the duration of the default timeout waiting for an Element to be present. If the test is still passing, consider using Element#exists? instead of rescuing
nknownObjectException
Watir::Exception::UnknownObjectException: element located, but timed out after 30 seconds, waiting for true condition on {:id=>"filesUploader", :tag_name=>"input", :type=>"file"}
HTML:
<div class="fileFormInner">
<input id="uploadFileAjaxData" value="{"d": {"path": "/"}, "f": "uploadFile", "u": 14696528}" name="d" type="hidden"> <input value="uploadFile" name="f" type="hidden">
<input id="filesUploader" name="file" multiple="" onchange="MP.Files.Uploader.uploadOnChange(this);" style="cursor:pointer; font-size: 36px; width: auto;" type="file">
</div>
接下来,我检查这个file_field是否可见并且是否存在:
irb(main):007:0> browser.file_field(:id=>'filesUploader').exist?
=> true
irb(main):008:0> browser.file_field(:id=>'filesUploader').visible?
=> false
这在Firefox中运行良好,但在Chrome中不起作用。此文件字段在Firefox中可见,但在Chrome中不可见。
有没有人有一些想法如何解决这个问题?
答案 0 :(得分:2)
我遇到了同样的问题,但能够按照louisjohnson-echo360建议的解决方法解决问题。
关键是在调用file_field上的set之前将Watir.relaxed_locate设置为false。
因此,对于您的具体问题,解决方案将是:
Watir.relaxed_locate = false
browser.file_field(:id=>'filesUploader').set ("C:\\files\\test.PNG")
Watir.relaxed_locate = true