17988


タイトルの通りですが、 PHPUnit + Selenium 2 + PhantomJS で `<input type="file">` のテストの書き方（
`<input type="file">` に値を入力する方法）がわからず困っています。  
（そもそも `<input type="file">` に対して PHPUnit から値を入力することが可能なのでしょうか...？）

下記は想定通り動作しなかったコードです。

[code]

    $element = $this->byCssSelector('input[type="file"][name="file"]');
    $element->value('/path/to/dummyimage01.png');
    
[/code]

上記コードでは `<input type="file" name="file">` には何も入力されていませんでした。

当方の環境は下記の通りです。

  * Mac OSX El Capitan (10.11.1)
  * PHP: 5.5.24
  * PHPUnit: 4.8.6
  * Selenium: 2.47.1
  * PhantomJS: 2.0.0


CC BY-SA 3.0
2015-10-22T06:46:17.107
17934
2015-10-23T10:47:35.933
2015-10-22T11:48:09.537
8160
8160
question
php
PHPUnit + Selenium 2 + PhantomJS で <input type="file"> のテストの書き方


PHPUnit + Selenium 2でのアップロードのファイルの指定の仕方は、  
<https://github.com/giorgiosironi/phpunit-
selenium/blob/a6fdffdd56f4884ef39e09a9c62e5e4eb273e42c/Tests/Selenium2TestCase/SessionCommand/FileTest.php#L10>  
にあるように以下のようにします。

[code]

        $remote_file = $this->file('selenium-1-tests/html/banner.gif');
    
[/code]

上記のコードそのままですが、アップロードは例えば以下のようになります。

[code]

        $this->url('php/file_upload.php');
        $remote_file = $this->file('selenium-1-tests/html/banner.gif');
        $this->byName('upload_here')
            ->value($remote_file);
        $this->byId('submit')
            ->click();
    
[/code]

これで動作するはずですが、PhantomJS 2.0のファイルアップロードは壊れており機能しません。  
<https://github.com/ariya/phantomjs/issues/12506>  
これは、2.0.1で修正予定とのことです。


CC BY-SA 3.0
2015-10-23T10:47:35.933
17988
2015-10-23T10:47:35.933
5489
17934
answer