Selenium Webdriver を使用して、ファイルのアップロードをエミュレートしようとしています
ファイル入力フィールドがあります:
<input class="upload_file_field" id="main_image_file" label="false" name="banner_image_file" type="file" />
これをテストで使用すると、ElementNotVisibleError が発生します
@driver.find_element(:id, "main_image_file").send_keys "/Users/dan/Desktop/sample.jpg"
ファイルをアップロードする前に、可視性を変更しようとさえしました:
@driver.execute_script("arguments[0].style.visibility='visible'; arguments[0].style.display='block'; arguments[0].style.height='100px'; arguments[0].style.width='100px'; arguments[0].style.opacity=1; arguments[0].style.zindex=20", @driver.find_element(:id, "main_image_file"))
それでも ElementNotVisibleError が発生します
どんなアドバイスでも大歓迎です
アップデート
さて、要素を非表示にする条件がいくつかあることがわかりました。
- 不透明度を 0 にすることはできません
- 長さと幅が 0 より大きい必要があります
- 可視性を非表示にすることはできません
- 表示をなしにすることはできません
- transform プロパティは、要素をページの外に移動して、表示されないようにすることができます
私の問題は変換プロパティにありました。これは、入力フィールドをページから完全に変換して非表示にする方法でした。そのため、jQuery ファイルのアップロードを使用して、より適切なスタイルのボタンを使用できました。
その後、
@driver.find_element(:id, "main_image_file").send_keys "/Users/dan/Desktop/sample.jpg"
ファイルのユーザー選択をエミュレートするのに完全にうまく機能しました