2

次のスニペットのように、ファイル選択入力のあるフォームを含む Web ページで作業します。

<form ... >
<div class="form__wrap">
  <ul class="form__list">
    Import: 
    <label for="fileUploadInput" class="btn mediaChoose inline" id="fileUpload">Choose File</label>
    <input class="mediaFile" id="fileUploadInput" name="file" type="file" />
  </ul>
</div>
...
</form>

Watir WebDriver を使用すると、以下は true を返します。

puts file_field(:id => "fileUploadInput").exists?

ただし、以下の file_field 呼び出しにより、Chrome で次のエラーが発生します (Firefox および IE で動作します)。

file_field(:id => "fileUploadInput").set(pathtofile)

Element is not clickable at point (695, 314). Other element would receive the click:
<label for="fileUploadInput" class="btn mediaChooseinline" id="fileUpload">...</label>
4

2 に答える 2

3

以前にそのようなエラーが発生したことがあるので、あなたはChromeを運転していると思います。エラーメッセージは、ファイルアップロード要素をクリックしようとしているが、その上にラベルが表示されているため、画面上の目的の座標をクリックすると、ファイルアップロード要素ではなくラベルをクリックすることを示しています。Chromeはその時点で混乱し、クリックを拒否します。

それが問題であることを確認するには、別のブラウザ、たとえばFireofoxで同じコードを試してください。経験によれば、Firefoxは別の要素がクリックを受け取るかどうかを気にしません。

于 2013-03-08T08:39:12.033 に答える
0

投稿されたフォームに似た縮小フォームを試してみましたが、Chrome と Firefox でうまくいきました。これは、Windows マシンでテストされました。FireFox と Chrome では、パス ディレクトリの構文が異なることに気付きました。

HTML -

<!DOCTYPE html>
<html>
<body>

<form action="demo_form.asp">
Import:
<label for="fileUploadInput" class="btn mediaChoose inline" id="fileUpload" >test</label>
<input class="mediaFile" id="fileUploadInput" name="file" type="file" />

</form>

</body>
</html>

テストコード

require 'watir-webdriver'

browser = Watir::Browser.new :firefox
browser.goto "C:\\Users\\mike\\ruby\\chrome1.html"

puts browser.file_field(:id => "fileUploadInput").exists?
#browser.file_field(:id => "fileUploadInput").set("c:\\Windows\\")  #chrome
browser.file_field(:id => "fileUploadInput").set("c:\\Windows\\..")  #firefox
browser.file_field(:id => "fileUploadInput").click
于 2013-03-07T23:45:05.490 に答える