2016-08-04 24 views
1

C#とSeleniumを使用してPaypalの引き出しを自動化しようとしています。アプリケーションは、提供された資格情報を使用してPaypalにログインし、「送金」リンクをクリックすると、ポップアップ(iframeのように見える)が表示されます。私の問題は、ポップアップの要素をクリックすることができず、私が見つけることができるすべての提案を試したことです。ここでSelenium WebDriver:要素を見つけることができません(C#)

は、フォームと基本的なHTMLのスクリーンショットです:

paypal form

私は「から」ドロップダウンと私が試した他のものの中をクリックしようとしている:

driver.FindElement(By.XPath("//*[@id=\"selection-container\"]/form/section/table/tbody/tr[2]/td/div[1]/div[1]")).Click(); 

((IJavaScriptExecutor)driver).ExecuteScript("arguments[0].hidden = false;", driver.FindElement(By.XPath("//*[@id=\"selection-container\"]/form/section/table/tbody/tr[2]/td/div[1]/div[1]"))); 

が、いずれかの取得と「LOにできません。 cate element 'または' Element not visible 'エラーが表示されます。ポップアップの 'From'入力要素にどうやって行くのですか? (もしあなたがpaypalを使っているなら、必要に応じてログインしてポップアップを見ることもできます)。

答えて

2

で、

[FindsBy(How = How.CssSelector, Using = "div[class$='source-dropdown']")] 
public IWebElement _ddSource; 

'$'は属性の終了を指定してくださいそして元に戻すには

driver.SwitchTo().DefaultContent(); 
+0

これはトリックでした。 – Mario

+0

OPがBy.CssSelector( "div#selection-container div.source-dropdown")として 'By.cssSelector'を使って要素を見つけることができるのであれば、常に最良の答えを出そうとします。なぜ' xpath ' '... ?? –

+0

@SaurabhGaur 'xpath'はOPコードです – Guy

0

は、ケースには、クラスの終わりには、あなたがiframe最初

IWebElement frame = driver.FindElement(By.TagName("iframe")); // locate the iframe element 
driver.SwitchTo().Frame(frame); 

driver.FindElement(By.XPath("//*[@id=\"selection-container\"]/form/section/table/tbody/tr[2]/td/div[1]/div[1]")).Click(); 

に切り替える必要がありsource-dropdown

+0

それともあなたはそれをしたい場合は、インライン 'driver.FindElement(By.CssSelector(" div要素:このcssSelectorを使用してポップアップし、今

IWebElement frame = driver.FindElement(By.CssSelector("iframe[src ='/moneytransfer']"); driver.SwitchTo().Frame(frame); 

あなたがそれをクリックすることができます。以下のコードを使用します();) –

+0

まだ試してみましたが、まだ '要素を見つけることができません'と表示されました。 – Mario

+0

@Marioはフレーム切り替え後にBy.CssSelector( "div#selection-container div.source-dropdown")を使ってみてください。 –

0

まず、そのiframeに切り替える必要があります。

div[class$='source-dropdown'] 
+0

私はこれを試しましたが、まだ '要素を見つけることができません'というエラーがありました。何らかの理由でiframeが見つかりませんでした。しかし、私がGuyが提案したように、代わりにBy.TagNameを使用すると、それは魅力的なように機能しました。 – Mario

関連する問題