2017-09-05 29 views
0

Selenium Chrome WebDriverの最新バージョンで小さな自動化されたテストスクリプトを構築していますが、切り替えた時点でもiFrame内でWebElementを取得しようとすると問題が発生します。Selenium - iFrame内でWebElementを取得できません

これは、HTMLが構築される方法です:あなたがチェックすることができたよう

HTML part

、iFrameの内部で「ちりばめられた」別のページがあり、そしてボタンが(それは私が選択した部分です)以下に定義されています。

Inner Button

これは私がWebElement(明らかに失敗)を取得するために使用しています方法です:

0123を

これは私がWebElementを取得しようとしたときに私が得た例外です:

no such element: Unable to locate element: {"method":"xpath","selector":"//button[@aria-label='Asociar Siniestro']"} 

(セッション情報:クロム= 60.0.3112.113)

あなたは私がの要素を取得することができますどのように知っていますかフレームに切り替えた後のiFrameのページ

+0

あなたが – SaiPawan

+0

を取得中にエラーが発生しているされているもの。これは私が得ていない例外では:「そのような要素を:{:要素が見つかりません」メソッド「:」XPathの「」セレクタ ":" //ボタン[@ aria-label = 'Asociar Siniestro'] "} (セッション情報:chrome = 60.0.3112.113) (ドライバ情報:chromedriver = 2.32.498550(9dec58e66c31bcc53a9ce3c7226f0c1c5810906a)、プラットフォーム= Windows NT 6.1 .7601 SP1 x86_64)(警告:サーバーはスタックトレース情報を提供していませんでした) " –

+0

私のアンカーを更新しました –

答えて

0

私はセレンに新しいですが、あなたのボタンは実際には「スパン」とのXPathであるように文句を言わないあなたが実際に使用してiFrameを選択することができます

//span[@class='apexButtonText'][contains(text(),'Asociar Siniestro')] 
+0

彼は同じクラスのボタンを持っているので、xpathは正しいですが、clickのコントロールがその要素ではない可能性がありますあなたのxpathは動作します –

0

を試してみてください、このように動作しそうです方法以下: -

  • フレーム(インデックス)
  • フレーム(フレームのフレーム[OR] IDの名前)
  • フレーム(WebElement frameElement)
  • defaultContent()

だから、フレームについての上記の情報を渡すことで切り替えることができます。はい、あなたはアクション

例要求するように応じて毎回を切り替える必要があります: -

driver.SwitchTo().Frame(0); 

driver.SwitchTo().Frame("top"); 

を....フレーム

driver.SwitchTo().defaultContent(); 

driver.SwitchTo().Frame("navigation"); 

であなたのアクションを実行します....XPathの

//span[@class='apexButtonText' and contains(.,'Asociar Siniestro')] 

OR

//span[contains(text(),'Asociar Siniestro')] 

OR

//span[@class='apexButtonText'][contains(text(),'Asociar Siniestro')] 

OR

下回ってみ

driver.SwitchTo().defaultContent(); 

フレームにあなたの行動を実行します

//button[@aria-label='Asociar Siniestro']//span[contains(.,'Asociar Siniestro')] 

は、それはあなたを助けることを願っています:)

1

このXPathを使用し//span[contains(text(),'Asociar Siniestro')]

関連する問題