2017-12-01 35 views
0

アプローチ: - すべてのIFrameを収集し、特定のxpathを見つけるために繰り返します。 が見つかった場合は、その要素をクリックします。セレンのリストweb要素の2番目のweb要素(アンカータグ)をクリックできません。

問題: - ネストされたIFrameにループしている間、私はxpathで要素を探していますが、要素を一意に識別できません。代わりに3つの要素を識別します。 私はそれをリストに入れています。そして、xpathが任意のフレームで識別されるとき、リストwebElementの2番目のリンク(アンカーリンク)をクリックしたいと思います。

リンクではクリックせず、「要素が表示されません」というエラーが表示されます。以下 は、私が使用していたコードである: - :

<td class="actionColumn"> 
<a class="actionLink" title="Edit - Record 1 - Test FEA case" onmousedown="searchResultClick.mousedown(this, event)" data-seclkr="1" data-seclkp="/5000v0000018Jgj/e" data-seclki="5000v0000018Jgj" data-seclkh="294f7f9698757809b8e22aba88fe090c" data-seclke="Case" href="javascript:srcUp(%27%2F5000v0000018Jgj%2Fe%3FsrPos%3D0%26srKp%3D500%26retURL%3D%252F_ui%252Fsearch%252Fui%252FUnifiedSearchResults%253FsearchType%253D2%2526sen%253D500%2526sen%253Da6L%2526sen%253Da6M%2526str%253D%252509%252B02309343*%2526isdtp%253Dvw%2526isWsVw%253Dtrue%2526isWsVw%253Dtrue%2526isWsVw%253Dtrue%2526nonce%253D1e0c5b181417fcc9ba9f5c87794ccaf8671265f86f9f82afbaa70ccb35599c53%2526sfdcIFrameOrigin%253Dhttps%25253A%25252F%25252Fmetlifeusdirectsales--ebsdev.cs66.my.salesforce.com%26isdtp%3Dvw%27);">Edit</a> 
</td> 
<th class=" dataCell cellCol1 " scope="row"> 
<a onmousedown="searchResultClick.mousedown(this, event)" data-seclkr="1" data-seclkp="/5000v0000018Jgj" data-seclki="5000v0000018Jgj" data-seclkh="294f7f9698757809b8e22aba88fe090c" data-seclke="Case" href="javascript:srcUp(%27%2F5000v0000018Jgj%3FsrPos%3D0%26srKp%3D500%26isdtp%3Dvw%27);">02309343</a> 
</th> 
<td class=" dataCell cellCol2 "/> 
<td class=" dataCell cellCol3 "/> 
<td class=" dataCell cellCol4 "> 
<a onmousedown="searchResultClick.mousedown(this, event)" data-seclkr="1" data-seclkp="/5000v0000018Jgj" data-seclki="5000v0000018Jgj" data-seclkh="294f7f9698757809b8e22aba88fe090c" data-seclke="Case" href="javascript:srcUp(%27%2F5000v0000018Jgj%3FsrPos%3D0%26srKp%3D500%26isdtp%3Dvw%27);">Test FEA case</a> 
</td> 

私は第二のタグのリンクをクリックします - ここ

String xPath = ".//a[@data-seclkr='1']";//xpath of 3 identified webelement 
Boolean iselementpresent = sfdc.GetWebDriver().findElements(By.xpath(xPath)).size()!= 0; 
      if (iselementpresent==true) 
      { 
       System.out.println("Yes element is present in nested for case Link"); 
       List<WebElement> casedetails = sfdc.GetWebDriver().findElements(By.xpath(".//a[@data-seclkr='1']")); 
       casedetails.get(1).click(); 
break; 
      } 
      else{ 
       System.out.println("No element is NOT present in nested for case Link"); 
      } 

はHTMLです。

助けてください..

おかげ

+0

By.linkText( "....")で試してください、特定のリンクを取得します – Grasshopper

+0

こんにちはグラスホッパー、テキストは動的に生成されています。 – Coolguy

答えて

0

は、あなたはそれが見えになるまで必要な要素のためのxpath

//a[contains(text(), '02309343')]

することもできますwaitを使用してtextことで、目的の項目を識別することができます。

By locator = By.xpath("//a[contains(text(), '02309343')]"); 
WebDriverWait wait = new WebDriverWait(sfdc.GetWebDriver(), 10) 
wait.until(ExpectedConditions.visibilityOfElementLocated(locator)); 
sfdc.GetWebDriver().findElement(locator).click(); 

それともあなたは、その名前によって要素を検索したくない場合、あなたはあなたの反復的なアプローチを使用することができますが表示されていない場合は、webdriverをはTimeoutException

あなたのコードは次のようになりますスローされます。

String xPath = ".//a[@data-seclkr='1']";//xpath of 3 identified webelement 
if (sfdc.GetWebDriver().findElements(By.xpath(xPath)).size()!= 0) { 
    System.out.println("Yes element is present in nested for case Link"); 
    List<WebElement> casedetails = sfdc.GetWebDriver().findElements(xPath); 
    WebDriverWait wait = new WebDriverWait(sfdc.GetWebDriver(), 10) 
    wait.until(ExpectedConditions.visibilityOf(casedetails.get(1))); 
    casedetails.get(1).click(); 
} else { 
    System.out.println("No element is NOT present in nested for case Link"); 
} 

EDIT可視性の例外を修正するには POSSIBLE解決:

このような3210
WebElement myElement = driver.findElement(By.xpath("//th[@scope='row']/a")); 
new Actions(driver) 
       .moveToElement(myElement) 
       .click() 
       .perform(); 

Actionsインターフェイスでマウスの動きをシミュレートすることができます。

+0

こんにちはRafel、私はこれを使用することはできません[含まれています(テキスト()、 '02309343')]。値 '02309343'が動的に生成されているためです。 – Coolguy

+0

@Coolguy第2のアプローチを試してください –

+0

@Rafelを試しましたが、動作しません。 私はコンソールに要素があるのを見ることができます...下記のメッセージを見てください。 ケースの場合、要素が存在します。 リストの要素のサイズが3である場合 org.openqa.selenium.TimeoutException:[[ChromeDriver:XPのクロム(e9f09ff2690abf537b2614231d9f6ef5)] - > xpath:.//の可視性を10秒後にタイムアウトしました。 [@ data-seclkr = '1']] ビルドインフォメーション:バージョン: '2.53.0'、リビジョン: '35ae25b'、時間: '2016-03-15 16:57:40' – Coolguy

関連する問題