2

ページにファイルを添付するためのリンクをクリックしようとしています。ページの HTML 構造は次のとおりです。

<div class="multi_attach_files">
    <span id="WorkkardFileUploader" class="file_uploader">
        <div id="px-widget-1" class="px-widget ui-widget-px">
            <div class="ui-helper-clearfix">
                <div id="px-form-1-input" class="px-form-input">
                    <form id="pxupload1" name="multipleFileUpload" style="" target="pxupload1_frame" action="/multiupload" method="POST" enctype="multipart/form-data" encoding="multipart/form-data">
                        <div class="px-input-button ui-button ui-widget ui-state-default ui-corner-all ui-button-text-only" role="button">
                            <span class="ui-button-text">
                                <span class="label">Attach Files</span>
                                <span id="dragMsg" class="dragcontainer">Drag Here</span>
                                <input id="wkFileUpload" class="fileupload" type="file" multiple="" tabindex="-1" name="noteFilename" title="Attach Files" style="background-color: transparent;">
                            </span>
                        </div>

は既に試し.sendkeys()ましたが、element( id="wkFileUpload") は Selenium には表示されません。

誰かが何か提案してもらえますか?

4

1 に答える 1

1

<input type="file" multiple>残念ながら、Selenium は要素をサポートしていないため、現時点 (2013 年 9 月、Selenium 2.35.0) ではそれを行うことはできません。

プロジェクト開発者自身によって行われた機能強化の要求がありますが、まだ実装されていません。そこにスターを付けると、優先度リストで上に移動できます。

バグには、いくつかの作業が行われたことが記載されていますが、すぐには行われないと思います。あなたの最善の策は、AutoIT (Windows のみ) またはRobotクラス (同様のセットアップでのみ機能します) を使用し、ダイアログに「盲目的に」パスを入力することです。

driver.findElement(By.id("wkFileUpload")).click();
Robot r = new Robot();
r.keyPress(KeyEvent.VK_C);        // C
r.keyRelease(KeyEvent.VK_C);
r.keyPress(KeyEvent.VK_COLON);    // : (colon)
r.keyRelease(KeyEvent.VK_COLON);
r.keyPress(KeyEvent.VK_SLASH);    // / (slash)
r.keyRelease(KeyEvent.VK_SLASH);
// etc. for the whole file path

r.keyPress(KeyEvent.VK_ENTER);    // confirm by pressing Enter in the end
r.keyRelease(KeyEvent.VK_ENTER);

それは悪いですが、うまくいくはずです。これらが必要になるかもしれないことに注意してください: How can I make Robot type a `:`? および文字列を KeyEvents に変換しますKeyEvent#getExtendedKeyCodeForChar()(さらに、同様の作業を行う新しい光沢のあるものがありますが、JDK7 からのみ使用できます)。

于 2013-09-16T08:44:36.903 に答える