0

これが私のテーブル構造です:

<form id="tableSection" enctype="application/x-www-form-urlencoded" action="/c4i-web-ABCDE/secured/user/users.xhtml" method="post" name="tableSection">
   <input type="hidden" value="tableSection" name="tableSection">
 <div class="clearfix">
 <div id="tableSection:dataTableWrapped" class="ui-datatable ui-widget has-3-cols c4i-ui-dataTable ui-datatable-resizable">
     <table role="grid">
         <thead>
         <tfoot>
         <tbody id="tableSection:dataTableWrapped_data" class="ui-datatable-data ui-widget-content">
              <tr class="ui-widget-content ui-datatable-even" aria-selected="false" role="row" data-rk="7c6c1565-4e8a-456a-8d89-30e2c93be5c3" data-ri="0" style="cursor: pointer;">
                  <td class="ac" role="gridcell" style="width: 350px;">
                       <div class="ui-dt-c">happy</div>

次の両方の Xpath を試しました。

"//div[@id='tableSection:dataTableWrapped']/tr[td//text()[contains(., 'happy')]]"

"//form[@id='tableSection']/div[@class*='ui-datatable']//td[text()='happy']"

どちらも Selenium2 で Stale Element エラーを返します。

org.openqa.selenium.StaleElementReferenceException: Element not found in the cache - おそらくページが検索されてから変更されました

行を見つけたら、単純な .click() コマンドを開始して選択します。どんな助けでも大歓迎です!

4

1 に答える 1

0

これを試してみてください。ただし、かなり緩く、非効率的な表現です。

//form[@id='tableSection']/div[contains(@class, 'ui-datatable')]//td[contains(descendant::*/text(), 'happy') or contains(text(), 'happy']

ここでXSLTを介した実行可能な例。

于 2012-06-22T23:56:29.477 に答える