Kubera開発ブログ

E2Eテストを簡単に作成できるツールの開発ブログ

input type=file で、選択したファイル名を取ろうとすると C:\fakepath\ というパスになる

ファイルをアップロードするときに使う input type="file" の操作を実装していた時に、テストコード用のツールを作っている関係で、入力できることと検証できることはセットで実装している。

 

入力というかファイルの選択は簡単にできるのだけど、選択されたファイルを検証しようと(表示されているファイル名を取ろうと)すると、

 

C:\fakepath\[実際に選んだファイル名]

 

という文字列が返される。選択するファイルがどこにあろうと、このパスになる。

Selenideがファイルタグの場合はそういった返却をする実装しているのかと github を見てみたけど特にそういう実装もなく。

じゃあ Selenium が?と思って、こちらもコード見てたんだけどそういう実装もなかったので調べてみたら、最近のブラウザはセキュリティのため正しいパスが返されずに、上記のパスで返す仕様になっているのだそう。

 

Windows以外だとどうなるかは試してないけど、何かしらの固定パスが返されるんだろうな。

まぁ、そもそもファイルタグはそこに表示されたファイル名が正しいか・・・?というようなテストコードを書くことは無いだろうから、ツールとしてもこんな実装は不要なんだけどね。