Конечно я смотрел это.
Но это, если мы напрямую работаем через PhantomJS (из консоли).
А мы (т. е. я) работаем внутри Selenium WebDriver обвязки над PhantomJS.
В интернете есть одно решение:
(PhantomJSDriver) driver.executePhantomJS("var page = this; page.uploadFile('input[type=file]', 'path to file');");
Но оно для Java и точно не работает в Ruby.
Я пробовал:
driver.execute_script "var page = this; page.uploadFile('input[type=file]', '/tmp/filename.ext');"
Получаю ошибку:
Selenium::WebDriver::Error::UnknownError: {“errorMessage”:“undefined is not a constructor (evaluating ‘page.uploadFile(‘input[type=file]’, ‘/tmp/filename.ext’)’)”,“request”:{“headers”:{“Accept”:“application/json”,“Accept-Encoding”:“gzip;q=1.0,deflate;q=0.6,identity;q=0.3”,“Connection”:“close”,“Content-Length”:“108”,“Content-Type”:“application/json; charset=utf-8”,“Host”:“127.0.0.1:8910”,“User-Agent”:“Ruby”},“httpVersion”:“1.1”,“method”:“POST”,“post”:"{“script”:“var page = this; page.uploadFile(‘input[type=file]’, ‘/tmp/filename.ext’);”,“args”:[]}",“url”:"/execute",“urlParsed”:{“anchor”:"",“query”:"",“file”:“execute”,“directory”:"/",“path”:"/execute",“relative”:"/execute",“port”:"",“host”:"",“password”:"",“user”:"",“userInfo”:"",“authority”:"",“protocol”:"",“source”:"/execute",“queryKey”:{},“chunks”:[“execute”]},“urlOriginal”:"/session/d1dd09f0-ee86-11e4-b297-cbc85bb9384a/execute"}} (org.openqa.selenium.WebDriverException)