Webdriverで要素を見つけるときに可能な限りXPathの使用を避けたいが、すでに見つかった要素から子要素を参照できるようにしたい.
次の html の場合:
<div id="myelement">
<table class="myclass">
<tbody>
<tr>
<td>something</td>
<td>
<table>
<tbody>
...
</tbody>
</table>
</td>
</tr>
<tr>
...
</tr>
</tbody>
</table>
</div>
CSS式があります:
driver.find_elements('div#myelement table.myclass > tbody > tr')
テーブル式を参照しなくても、これをテーブル要素と行に分割したいと考えています。たとえば、XPath の場合:
table = driver.find_element(:xpath, "//div[@id='myelement']//table[@classname='myclass']")
rows = table.find_elements(:xpath, 'tbody/tr')
JQuery $('div#myelement table.myclass').find('> tbody > tr') を使用して動作する次のことを試しました
table = driver.find_element(:css, 'div#myelement table.myclass')
rows = table.find_elements(:css, '> tbody > tr')
これにより、エラー `assert_ok' が発生します: 無効または不正な文字列が指定されました (Selenium::WebDriver::Error::UnknownError)
もちろん、最初の「>」を削除しても機能しますが、直系の子だけでなく、子孫の tbody が選択されることを意味します。
cssだけを使用してこれを正しく行うにはどうすればよいですか?