2016-05-18 8 views
0

enter image description hereイメージをクリックすると生成されるjQueryモーダルウィンドウに切り替えたいと思います。しかし、Selenium(IE Webdriver)は生成されたモーダルウィンドウを認識できず、切り替えもできません。例外/エラーは表示されません!Selenium IE Webdriver:jQueryモーダルウィンドウに切り替えることができません

IE版 - 11 セレンバージョン - 2.53 IE webdriverをバージョン - 2.53.1

Iはスイッチング用試みたコード:

objMovePage.clickFromAccountPicker(); //Image clicked 

Thread.sleep(2000); //Wait for new window to show up 
Set<String> windows = driver.getWindowHandles(); 

System.out.println(windows.size()); // This returns 1 always. 


for(String handle: windows) 
{ 
    driver.switchTo().window(handle); 
} 
System.out.println(driver.getTitle()); //Prints current window title 

Iもdriver.switchTo().window("<window name>"); // This also doesn't work.

を試みました画像をクリックするとHTMLコードが表示されます

<td style="height: 20px"> 
<input id="imgPickAcct" align="top" type="image" style="border-width:0px;" onclick="PickAcctClick(711269, 450, 300);" src="images/magnifyglass.gif" tabindex="-1" name="imgPickAcct"> 
</td> 

JS機能コード

function PickAcctClick(intTransmissionID, intwidth, intheight) 
     { 
       var lstrPath = 'wfrmGetTransmittedAccounts.aspx?TransmissionID=' + intTransmissionID; 
       var returnValues = openModal(lstrPath, intwidth, intheight); 
       if (returnValues != undefined) 
       { 
       document.forms[0].txtFromAccountingID.value = returnValues[0].toString(); 
       document.forms[0].txtFromDept.value = returnValues[1].toString(); 
       document.forms[0].txtFromAcct.value = returnValues[2].toString(); 
       document.forms[0].txtFromCur.value = returnValues[3].toString(); 
       document.forms[0].txtFromProduct.value = returnValues[4].toString(); 
       if (isAnObject("txtFromChart1")) 
        {document.forms[0].txtFromChart1.value = returnValues[5].toString();} 
       if (isAnObject("txtFromChart2")) 
        {document.forms[0].txtFromChart2.value = returnValues[6].toString();} 
       if (isAnObject("txtFromChart3")) 
        {document.forms[0].txtFromChart3.value = returnValues[7].toString();} 
       } 
       return false; 
     } 

注:これはshowModalDialogからのアラートまたはダイアログウィンドウではありません。 編集:iFrameはありません。

答えて

0

driver.switchTo()は、フレーム、ウィンドウ、タブの切り替えに使用されます。モーダルウィンドウは、どのdivと同様に "通常の" HTMLマークアップです。 これに切り替える必要はありません。xpath(またはcssセレクタなど)を使用して任意の要素を選択できます。

編集:

あなたはポップアップした場合、それはあなたが(例えば2秒は十分な時間ではありません)タイミングの問題を抱えている可能性がありますが見つかりません。 明示的な待機を使用することをお勧めします(this answerで使用されているようにWebDriverWaitを参照)。明示的な待機は、スレッドをスリープ状態にするだけでなく、常によりクリーンな方法です。

+0

新しいウィンドウで開き、独自のHTMLコードを使用します。私は要素の操作を実行しようとしましたが、NoSuchElementExceptionを取得しようとしました。 – Haxor

+0

本当のポップアップですか?私はあなたが 'System.out.println(windows.size())を書いて以来、それが疑わしいです。 //これは常に1を返します。これは、新しいウィンドウが作成されていないことを強く示します。また、モーダルウィンドウは新しいウィンドウで開くはずです。モーダルウィンドウがポップアップであり、セレンで見つからないことがわかっている場合はスクリーンショットまたはhtmlを投稿してください – samjaf

+0

スクリーンショットが追加されました。 – Haxor

0

私も最初はプライベートモードであなたのInternetExplorerを起動することですregedit.exeを

内のリンクを参照し、設定し、同じウィンドウに直面していました。 の後、InternetExplorerはクリーンなセッションデータで開始され、 は終了時に変更されたセッションデータを保存しません。そのためには、 という特定の機能をドライバに渡す必要があります。すなわち、 の値を持つie.forceCreateProcessApiと-private値のie.browserCommandLineSwitchesです。 InternetExplorer 8以降、およびWindowsでのみ動作するようにしてください。 レジストリHKLM_CURRENT_USER \ Software \ Microsoft \ Internet エクスプローラ\メインパスには値0のキーTabProcGrowthが含まれている必要があります。

2番目は、InternetExplorerの起動中にセッションをクリーンアップすることです。 の場合は、ドライバにtrue値の が指定されたie.ensureCleanSession機能を渡す必要があります。これにより、InternetExplorerの実行中のすべてのインスタンス (手動で開始されたインスタンスを含む)のキャッシュがクリアされます。

IE 11の場合のみ、ドライバが作成するInternet Explorerの インスタンスへの接続を維持できるように、ターゲットの コンピュータにレジストリエントリを設定する必要があります。32ビットWindowsインストールの場合、レジストリエディタで確認する必要がある キーは、 HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Internet Explorer \ Main \ FeatureControl \ FEATURE_BFCACHEです。 64ビットWindows のインストールの場合、キーは HKEY_LOCAL_MACHINE¥SOFTWARE¥Wow6432Node¥Microsoft¥Internet Explorer¥Main¥FeatureControl¥FEATURE_BFCACHEです。 FEATURE_BFCACHEサブキーが存在する場合と存在しない場合があり、存在しない場合は を作成する必要があります。重要:このキーの中に、エントリは私の問題を解決しTabProcGrowthを追加0

https://github.com/SeleniumHQ/selenium/wiki/InternetExplorerDriver

の値でiexplore.exeを命名 DWORD値を作成します。

プライベートセッションを開くことは無視できると思います。

+0

対象のコンピュータはここのWebサーバですか?または私がセレンを実行しているシステム? – Haxor

+0

私は上記を試してみて、webdriverはまったく起動できませんでした。 – Haxor

関連する問題