私はIE9でSelenium(.NET /言語はC#)を使用しており、次のhtmlマークアップ(関連部分)を持っています
<tr>
<td class="a" align="b">
<span class="i"/>
<input type="checkbox" class="checkboxClass" name="chkBox" value="100" disabled/>
</td>
<td>
<a href="/links/items/100.img">Battery</a>
</td>
<td align="left">3/16/2016
</td>
</tr>
<tr>
<td class="a" align="b">
<span class="i"/>
<input type="checkbox" class="checkboxClass" name="chkBox" value="101"/>
</td>
<td>
<a href="/links/items/101.img">Polish</a>
</td>
<td align="left">3/16/2016
</td>
</tr>
<tr>
<td class="a" align="b">
<span class="i"/>
<input type="checkbox" class="checkboxClass" name="chkBox" value="101" disabled/>
</td>
<td>
<a href="/links/items/102.img">Polish</a>
</td>
<td align="left">3/16/2014
</td>
</tr>
目的は、兄弟のチェックボックスが無効になっている場合にのみすべてのhrefを取得することです。XPathの経験はほとんどありませんが、次の式を使用してすべてのhrefを取得できますが、選択を無効なチェックボックスのみに制限する方法に固執しています-ボックス。
var hrefs = driver.FindElements(By.XPath("//tr/td[2]/a"));
私は「前の兄弟」でかなりの試行錯誤をしましたが、それ以上は進みませんでした。たとえば、hrefをハードコーディングして、チェックボックス要素にアクセスできるかどうかを確認しました。後でループで一般化して、チェックボックスの[選択済み]プロパティをオンにします。しかし、以下は機能しませんでした。
var checkbox = driver.FindElement(By.XPath("//tr/td[a[@href='links/items/100.img']]/preceding-sibling::td[1]"));
私の勘では、ソリューションはこのための1つのXPath式のように単純であるため、ループを回避でき、コミュニティからフィードバックを得るのに役立ちます。