2016-12-20 10 views
0

私のWebページには、同じxpathを持つシステムビューがあります。 要素:特定の要素をクリックした後にループを止める方法

<span class="ms-crm-VS-header-MenuItem-Title ms-crm-VS-header-MenuItem-Title-Rest" title="System Views">Accounts Being Followed</span> 
 
<span class="ms-crm-VS-header-MenuItem-Title ms-crm-VS-header-MenuItem-Title-Rest" title="System Views">Accounts I Follow</span> 
 
<span class="ms-crm-VS-header-MenuItem-Title ms-crm-VS-header-MenuItem-Title-Rest" title="System Views">Active Accounts</span> 
 
<span class="ms-crm-VS-header-MenuItem-Title ms-crm-VS-header-MenuItem-Title-Rest" title="System Views">Create Personal View</span> 
 
<span class="ms-crm-VS-header-MenuItem-Title ms-crm-VS-header-MenuItem-Title-Rest" title="System Views">My Active Accounts</span> 
 
<span class="ms-crm-VS-header-MenuItem-Title ms-crm-VS-header-MenuItem-Title-Rest" title="System Views">My Connections</span> 
 
<span class="ms-crm-VS-header-MenuItem-Title ms-crm-VS-header-MenuItem-Title-Rest" title="System Views">System Views</span>

彼らのxpathがある:

//ul[contains(@class, 'ms-crm-VS-Menu')]/li/a[2]/span/nobr/span 

私は、ビューのそれぞれを開きたいが、特定のビューを開いた後に停止します。私は以下のコードを試しましたが、私のコードはすべてのシステムビューを開いています。誰かが助けてくださいすることができます

  IList<IWebElement> elements = driver.FindElements(By.XPath("//ul[contains(@class, 'ms-crm-VS-Menu')]/li/a[2]/span/nobr/span")); 
     foreach (IWebElement eachelement in elements) 
     { 
      if (eachelement.Text.Equals("Create Personal View")) 
      { break; } 
      executor.ExecuteScript("arguments[0].click();", eachelement); 

      } 
     } 

答えて

0

うまくいけば、スニペットの下

List<WebElement> elements = driver.findElements(By.xpath("//span[contains(@class, 'ms-crm-VS-header-MenuItem-Title ms-crm-VS-header-MenuItem-Title-Rest')]")); 
    for(WebElement ele : elements){ 
     //System.out.println(ele.getText()); 
      JavascriptExecutor executor = (JavascriptExecutor)driver; 
      executor.executeScript("arguments[0].click();", ele); 
      if (ele.getText().equals("Create Personal View")){ 
       break; 
     } 
    } 
+0

こんにちは@ prithvi394 ...コードを修正し、私はまだ同じ問題を持っています。ループは終了していません。 –

+0

SOPLステートメントのコメントを外し、各パスの出力を確認します。コードはマシン上で動作しました。 Ifループに入ると、コントロールはwhileループから出てきます。 – prithvi394

+0

@ Anand V上記の解決策はありましたか? – prithvi394

0

はこれを試して動作するはずです:

IList<IWebElement> elements = driver.FindElements(By.XPath("//ul[contains(@class, 'ms-crm-VS-Menu')]/li/a[2]/span/nobr/span")); 
     foreach (IWebElement eachelement in elements) 
     { 
      if (GetInnerHtml(eachelement)=="Create Personal View") 
      { break; } 
      executor.ExecuteScript("arguments[0].click();", eachelement); 

      } 
     } 

public static string GetInnerHtml(IWebElement element) 
{ 
    var remoteWebDriver = (RemoteWebElement)element; 
    var javaScriptExecutor = (IJavaScriptExecutor) remoteWebDriver.WrappedDriver; 
    var innerHtml = javaScriptExecutor.ExecuteScript("return arguments[0].innerHTML;", element).ToString(); 

    return innerHtml; 
} 
関連する問題