无法使用watir和chromedriver

时间:2017-01-19 12:08:40

标签: watir selenium-chromedriver

我使用的是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中不可见。

有没有人有一些想法如何解决这个问题?

1 个答案:

答案 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