Seleniumを使ってWebサイトを操作してるのですが、オシャレなサイトのファイルアップロードでinputタグを隠ぺいしていて、ファイルダイアログをどうしても出さないとファイルをアップロード出来ない作りになっていました。
普通のinputタグについては、簡単にできるようになってるみたいです。
要はfileのinputタグを取得してSendKeysでファイルのパスを送り付ければOKみたいです。(リンク先はJavaだけどわかるよね)
オシャレサイト攻略は…
上記方法でいけばいいのですが、オシャレサイトは、input type="file"のタグが隠ぺいされていてどうしようもない。そこで、我らがWindows FormsのSendKeysを使って以下のようにしてダイアログを操作しました。
this.internetExplorerDriver.Url = "オシャレサイトのURL"; var formmain = this.internetExplorerDriver.FindElement(By.Id("formのID")); // ファイルアップロードのDIVタグを取得してクリックしてファイルダイアログを出す formmain.FindElements(By.ClassName("async-upload__picker")).First().Click(); // SendKeysを使ってファイル名をタイプしてEnter SendKeys.SendWait(@"c:\Users\Kazuki\Pictures\image.PNG"); SendKeys.SendWait("{Enter}"); // そしてサブミット var button = formmain.FindElements(By.TagName("img")).Last(); button.Click();