技術と魚

雑感と備忘録

selenium-side-runnerでinput[type=file]がhiddenとなっているタイプのファイルアップロードをどうにかする

おしゃれなアップロードボタンは、inputを隠してダミーボタンを経由してinteractしているだけなのでseleniumがinvisibleなelementを操作できず死ぬ。

こんな感じのエラーになる

ElementNotInteractableError: element not interactable

ダミーボタンのclickを行うステップを消して、代わりにinput[file=type]をvisibleにするJSを走らせるステップを作る。 なおSelenium IDEでrecordingしたあとのJSONはアップロードファイルがC:\fakepathか何かになっているので、これも絶対パスに変える。

{
  "id": "XXXX",
  "command": "executeScript",
  "target": "document.querySelector('input#upload_file').style.display = 'block';"
}, {
  "id": "YYYY",
  "command": "type",
  "target": "input#upload_file",
  "value": "/Users/xxx/yyy/zzz.xlsx"
}