2011-12-16 11 views
0

私はいくつかのIT管理タスクを自動化するためにセレンを使用していますが、NAS(内部Webページからアクセスする)にはスワップアウトされた外部ドライブが必要です。私は、WebインターフェースがAJAXを使って画面を動的に変更すると思うし、一般的にセレンを使ってウェブページをナビゲートする能力が失われていると思う。AJAXとランダムに生成されたターゲットidを持つセレンのclickat

NASサプライヤーはでWebインタフェースのライブデモを持っている:これはいつも同じNAS用Webインターフェイスにある http://www.synology.com/us/products/demo/index.php

誰でもこのタイプのページをナビゲートする方法に関するヒントはありますか? (コントロールパネルを開くなどのためにclickat()に要素ロケータを見つけるにはどうすればよいですか)。これらのIDは、ログインするたびに「target id = ext-gen525」のように無作為に生成されるようです。

答えて

1

CSSまたはXPATHロケータを使用して要素を見つけることができます。 そして、アプリケーションがAJAXコントロールを使用するので、適切な待機条件を使用してセレンコマンドの間にある程度の待ち時間を与えます。ここで

は、「コントロールパネル」をクリックして、(デモのWebインタフェースで:http://www.synology.com/us/products/demo/index.php)「ユーザー」をクリックするサンプルコードです

//After login to http://demo.synology.com:5000 
    selenium.click("//div[text()='Control Panel']"); 
    Thread.sleep(3000); // Use proper wait conditions 
    selenium.click("//div[text()='User']"); 
+0

うん、これは動作し、私はあなたが言っていることを次のようしています。私はfirefoxアドオンのDOMインスペクタとXPatherを使って、ボタンをクリックすることで、ボタン上のテキストのような対象を賢明にすることができます。 私が使用しているセレンIDEは、睡眠の代わりに一時停止していますが、スクリプトを実行して機能しています。誰かが私のような問題を抱えていて、答えをカットアンドペーストします。 – daniel

+0

selenium.open( "/ webman/index.cgi"); selenium.type( "id = login_username"、 "admin"); selenium.type( "id = login_passwd"、 "synology"); selenium.click( "id = login_submit"); Thread.sleep(3000); selenium.click( "// div [text()= 'コントロールパネル']"); Thread.sleep(3000); selenium.click( "// div [text()= '外部']"); Thread.sleep(3000); selenium.click( "// div [text()= 'SATALink SPIF225A']"); Thread.sleep(3000); selenium.click( "// button [text()= 'Eject']"); Thread.sleep(3000); selenium.click( "// button [text()= 'はい']"); Thread.sleep(3000); selenium.click( "// button [text()= 'ログアウト']"); – daniel

関連する問題