2016-09-01 17 views
0

私はC#でセレンを学んでいますが、私はリストの下のリンクをクリックしているが、常にエラーを表示しています "リンクテキスト= 、以下のようにコード:このリンク要素はどのように入手できますか?常に表示 "リンクテキストで要素を見つけることができません=="

<div id="ctl00_subNavMain_upSubMenu"> 
    <ul id="ctl00_subNavMain_subMenu"> 
     <li class="btnHome selected"> 
      <a href="javascript:__doPostBack('ctl00$subNavMain$subMenu','0')">Home</a> 
     </li> 
     <li class="btnNew"> 
      <a href="javascript:__doPostBack('ctl00$subNavMain$subMenu','1')">New Observation</a> 
     </li> 
     <li class="btnTestPlatform"> 
      <a href="javascript:__doPostBack('ctl00$subNavMain$subMenu','2')">Test Platforms</a> 
     </li> 
     <li class="btnSearch"> 
      <a href="javascript:__doPostBack('ctl00$subNavMain$subMenu','3')">Search</a> 
     </li> 
     <li class="btnOTS"> 
      <a href="javascript:__doPostBack('ctl00$subNavMain$subMenu','4')">Remedy OTS</a> 
     </li> 
     <li class="btnBug"> 
      <a href="javascript:__doPostBack('ctl00$subNavMain$subMenu','5')">Bugzilla</a> 
     </li> 
    </ul> 
</div> 

は、私は、これは試してみました:

  ReadOnlyCollection<IWebElement> links = driver.FindElements(By.XPath("//*[contains(text(),'Search')]")); 
      MessageBox.Show(links.Count.ToString()); 
      foreach (IWebElement link in links) 
      { 
       if(link.TagName=="a") 
      { 
        //MessageBox.Show(link.Displayed.ToString()); 
        link.Click();     
      }        
      } 

が、それはエラーを示し、「この要素をクリックすることができません」と私は「link.Displayed」の使用を試みたが、すべてがあります私はそれを解決することができます、それは私にとって大きな問題です、ありがとう!

私はこれを試しました: "MessageBox.Show(link.Enabled.ToString());"すべては "true"を返す

ソリューション: "javascriptexecuter js =(javascriptexecuter)driver; js.executescript(" arguments [0]。click() "、link);" ありがとうございました。

答えて

1

あなたは、XPathとしてあなたの検索要素でこれを使用することができます。

// * [(テキスト()、 '検索')が含ま]

+0

ありがとう、それは、2つの要素を見つけて、link.Click()を行うが、 "要素をクリックすることはできません"、私は "link.Displayed"を使用して、すべての偽を表示する方法を知っているそれ?感謝! –

+0

以下を使用してください:1.link.sendkeys( "\ n")。 2.次のようにjavascriptを使用します。javascriptexecuter js =(javascriptexecuter)driver; js.executescript( "arguments [0]。click()"、リンク); 3.アクションa =新しいアクション(ドライバ)。 –

+0

ありがとう、私はこれらの3つの方法を試してみました、2番目の作品、他のポップアップ同じerror.thanks。 –

1

私はHeziイスラエルに同意します。 いくつかの要素に共通の文字列を探しているのでなければ、 '='の代わりに 'contains'を使用することをお勧めします。私は特定の単語の後にスペースがあるWebページをテストしましたが、これは '='を使うxpathsが失敗する原因となりました。 '含む'を使うと、それを守ることができます。

+0

ありがとう、それは働く、私は2つの要素を見つけ、link.Click()を行うが、 "要素をクリックすることはできません"エラーを表示、私は "link.Displayed"を使用して、すべての偽を示す、あなたはそれを解決する方法を知っていますか?ありがとう! –

関連する問題