0

Phantomjs ドライバーを使用して、セレン Web ドライバー スクリプトをヘッドレスで実行しています。ファイルのアップロードに問題がありますが、通常のブラウザー (Firefox または Chrome) では OS ダイアログ ボックスがポップアップ表示され、マシン内のファイルを見つけてアップロードできるようになります。GhostDriver (Phantomjs Driver) でそれを行う方法は? ありがとう

4

4 に答える 4

0

私は同じ問題を抱えており、同じ質問を投稿しました。sendKeys() メソッドを使用すると、PhantomJS がハングアップします。

ここに問題が記録されています - https://github.com/ariya/phantomjs/issues/10993

この問題に関するコメントの1つは、以下のステートメントが機能したと述べています-

(PhantomJSDriver) driver.executePhantomJS("var page = this; page.uploadFile('input[type=file]', 'path to file');");

上記の解決策を試すこともできますが、うまくいく場合とうまくいかない場合があります。

于 2015-03-30T06:51:58.690 に答える
0

「複数」属性が設定されている場合、このコードはアップロードに役立ちました:

protected void uploadFile(CharSequence... keys) {
    if (((WrapsDriver) driver).getWrappedDriver() instanceof PhantomJSDriver) {
        StringBuffer s = new StringBuffer(keys.length);
        for (int index = 0; index < keys.length; index++) {
            s.append(keys[index].toString());
        }
        ((PhantomJSDriver) ((WrapsDriver) driver).getWrappedDriver()).executePhantomJS(
                String.format("var page = this; page.uploadFile(arguments[0], '%s');", s.toString()), getElement());
    } else {
        getElement().sendKeys(keys);
    }
}
于 2015-08-18T16:04:10.067 に答える