0

を使用してファイルをアップロードしようとしていますselenium。しかし、問題は私のアップロードフィールドが好きではないことです

<input type="file".....> [where i can directly say "selenium.type("xpath ","file path") ]

しかし、ここでは、ファイルをアップロードするために Rad Uploader を使用していますuploader

を使用してRaduploaderでファイルをアップロードする方法を知っている人はいますか?Selenium

<object height="22px" type="application/x-silverlight-2" data="data:application/x-silverlight-2," 
id="ctl00_ctl00_ContentPlaceHolder1_mainTabContainer_thirdTab_ChildPlaceHolderCa‌​mpVolunteers_fileUploadVolunteersilverlight04"
class="ruObject" style="width: 100%;"> 

これは、アップロード フィールドのコードの一部です。

ありがとう。

4

1 に答える 1

1

Rad Uploaderは基本的に Java アプレットなので、 LiveConnectを使用して操作できます。

それと Selenium 用のツールもあります (ただし、私は使用していないため、うまく機能するかどうかはわかりません): http://fest.codehaus.org/Selenium

うまくいかない場合は、別の自動化ライブラリを使用してファイルをアップロードする必要があります。これは、Selenium が Java アプレットでもブラウザー外でも動作するように構築されていないためです。考えられる解決策には、ファイルをウィンドウの外からアップローダーにドラッグ アンド ドロップまたは ( Ctrl+C+ Ctrl+Ving) するか、[参照] ボタンをやみくもにクリックすることが含まれます...


編集

OPのコードは、実際にはJavaアプレットではなくSilverlight要素であることを示しているため、明らかに間違った製品を見ていました。

しかし-Javaアプレット用のツールがあることを知って、私はこれらを掘り下げて見つけました:

Silverlight で Selenium RC を使用するためのツールがあります。実際にどれだけ機能するかはわかりませんが、試してみてください。はい、それが Selenium RC のみであることは知っていますが、試してみることができますWebDriverBackedSelenium...

Scott Hanselman のブログ (非常に読みやすい!) - Silverlight がScriptableメソッドを実行できることを「悪用」しています。これは Selenium IDE 用に書かれていますが、同じことが Selenium IDE でも機能しWebDriverます。

Silverlight のテスト フレームワーク。マイクロソフトによる。Selenium は Web ページ用です。これを Silverlight マジックで試してみてください。


編集2:

先に述べたオプションは常にあります。アップロードは noinputですが、Silverlight オブジェクトであり、ブラウザ ダイアログ (または Silverlight オブジェクト) を操作できる WebDriver 用の API がないため、次のように試すことができます。

Silverlight 要素をクリックすると、ポップアップ ウィンドウが表示されますが、これを制御することはできません。私が知っているブラウザーとオペレーティング システムでは、ウィンドウが開いた後、カーソルがFile name入力にあるとほぼ想定できます。この仮定があなたの場合にも当てはまることを確認してください。

Alt + Nそうでない場合は、少なくとも Windows では、 を押してジャンプしてみることができます...

(Java コードが続きます! 私は C# を本当に知りません。Java でも動作します。Java のクラスに似ている C# のクラスRobotは ですSendKeys)

はいの場合は、Robotクラスを使用してパスを「盲目的に」入力できます。あなたの場合、それは次のようなものになります:

driver.findElement(By.id("SWFUpload_0")).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 `:`? および文字列を KeyEvent に変換する

于 2012-06-14T10:05:11.423 に答える