Selenium と iframe 質問する

Selenium と iframe 質問する

ページのタブをクリックすると読み込まれる iframe があります。Firebug を使用して IE8 で iframe を確認すると、次の内容が表示されます。

iframe id=tabContextFrame class=contextFrame contentEditable=inherit src=/xyz.dt?forward=show&layouttype=NoHeader&runid=1234 name=tabContextFrame url=/xyz.dt?forward=show&layouttype=NoHeader&runid=1234 scrolling=auto

以上です。iframe の下の階層は表示されません。iframe 内のリンクをクリックしたいのですが、iframe 内の要素を見つけるために、 を実行してselenium.click("on the tab that loads the iframe")から を実行しましたselenium.getHtmlSource()。このソースから、少なくとも興味のあるリンクを見つけることができます。 を実行しましたselenium.click("//span[text()='Link']")が、何も起こらないようです。何かアイデアはありますか?

コードは次のとおりです:

selenium.click("//span[text()='tab that loads iframe']");   
Thread.sleep(5000);   
selenium.selectFrame("tabContextFrame");         
selenium.mouseOver("//span[text()='Link']");   
selenium.mouseDown("//span[text()='Link']");  
selenium.mouseUp("//span[text()='Link']");   
Thread.sleep(5000);   
selenium.selectFrame("null");  

ベストアンサー1

Selenium 1.0 を使用していると思います。Selenium 2.0 と WebDriver をご覧になりましたか。次のものを見つけましたが、うまくいきました。

Q: contentEditable iframe に入力するにはどうすればいいですか? A: iframe の名前が「foo」であると仮定します。

driver.switchTo().frame("foo");
WebElement editable = driver.switchTo().activeElement(); 
editable.sendKeys("Your text here"); 

時々、これが機能しないことがあります。これは、iframe にコンテンツがないためです。Firefox では、「sendKeys」の前に以下を実行できます。

((JavascriptExecutor) driver).executeScript("document.body.innerHTML = '<br>'"); 

これは、iframe にはデフォルトでコンテンツがないため、つまりキーボード入力を送信するものがないため必要です。このメソッド呼び出しにより、空のタグが挿入され、すべてが適切に設定されます。

完了したら、必ずフレームから切り替えてください (以降のすべての操作はこの特定のフレームで行われるため)。

driver.switchTo().defaultContent();

私はこれを見つけましたhttp://code.google.com/p/selenium/wiki/FrequentlyAskedQuestions

おすすめ記事