2012-03-07 10 views
0

グリッドに表示されたページに複数のハイパーリンクがあり、最初のハイパーリンクにフォーカスを当てたい場合は、タグの参照を取得する方法がありますかhrefテキストの一部に基づいてhref?XPath - 部分文字列に基づいて要素を選択する方法

<a href="/Customers/7">Adam Backwell</a> 
<a href="/Customers/12">Eric Mebratu</a> 
<a href="/Customers/5">Dave Johnson</a> 
<a href="/Customers/54">Tom Rogan</a> 

だから私は私のxpathのこのような何かをしたい:

"//table[@id='{0}']/a[href{1}]", usersGridId, "/Customers/"); 

だから、最初のハイパーリンクを取得

たとえば、ページが車名のハイパーリンクの束を持って言うことができます/ Customers /をhrefに追加します。私はあなたがちょうど部分的な文字列の一致を行うことができるかどうかはわかりません。別の言葉で言えばXPathの正規表現ですか?この場合、私はCustomerIdに依存したくないです。なぜなら、グリッドが動的なのでIdがどのようになるかわからないからです。グリッドリスト内の最初のハイパーリンクへの参照を取得しても、それは誰でも気になります。

UPDATE:

私はセレンのWebフレームワークでXPathを使用していることを追加するのを忘れ。

UPDATE:

当たり前、私はすでにそのテーブルへの参照を持っているだけで実現

だから私はgrid.FindElementのようにやっている(あなたはここでそのコードthough..sorryは表示されません) (By.XPath(xPath));グリッドは既にテーブル要素を参照しています。このテーブルの中にはtbodyがありますので、私は今このような要素に到達するためのtryignです:

IElement gridTable = GetCustomerGrid(); // now represents the table element that holds the customer list 
xPath = string.Format("/tbody[@id='{0}']/a[1](contains(@href,'{1}')]", usersGridContainerId, "/Customers"); 
IWebElement hyperlink = gridTable.FindElement(By.XPath(xPath)); 

これは不運です。

:ここで私はUPDATEハイパーリンクで

<div class="table"> 
    <table id="customerList"> 
     <thead> 
      <tr> 
       <th class="column1">ID</th> 
       <th class="column2">Name</th> 
       <th class="column3">Email</th> 
      </tr> 
     </thead> 
     <tbody id="custListContainer"> 
      <tr> 
       <td class="column1">7</td> 
       <td class="column2"><a href="/Customers/7">Joe Smith</a></td> 
       <td>[email protected]</td> 
      </tr> 
     .. next user, and so on 
     </tbody> 
    </table> 
</div> 

を取得しようとしているページの構造だ

string.Format("/tbody[@id='{0}']/a(contains(@href,'{1}')]",usersGridContainerId, "/Customers"); // did not find the hyperlink 
string.Format("/tbody[@id='{0}']/a[1](starts-with(@href,'{1}')]",usersGridContainerId, "/Customers"); //invalid XPath Syntax error 
string.Format("//tbody[@id='{0}']/a(contains(@href,'{1}')]",usersGridContainerId, "/Customers"); 
string.Format("//tbody[@id='{0}']/a(starts-with(@href,'{1}')]",usersGridContainerId, "/Customers"); 

は、上記更新されたコードに基づいて、以下を試してみました

試してみました、運がいいえ:

string xPath = (string.Format("//tbody[@id={0}]/tr/td/a(starts-with(@href, {1})", usersTableId, " /Customers/")); 
OurSeleniumDriverInstance.FindElement(By.XPath(xPath)); 
+1

。 – PositiveGuy

答えて

関連する問題