Edge 変動するテキストを含むXpathの取得
いつも参考にさせていただいております。
Edge(Chronium版)上の表が以下のようにあります。
【やりたいこと】
●任意の対象者の詳細ボタンをクリックさせたい
【Xpath】
氏名のXpath
1人目
/html/body/table[3]/tbody/tr/td/table/tbody/tr/td/form/table[2]/tbody/tr[2]/td[1]/span[2]
2人目
/html/body/table[3]/tbody/tr/td/table/tbody/tr/td/form/table[2]/tbody/tr[3]/td[1]/span[2]
→Trの値が1づつ加算されていきます
詳細ボタンのXpath
1人目
/html/body/table[3]/tbody/tr/td/table/tbody/tr/td/form/table[2]/tbody/tr[2]/td[2]/input
2人目
/html/body/table[3]/tbody/tr/td/table/tbody/tr/td/form/table[2]/tbody/tr[3]/td[2]/input
→同じくTrの値が1づつ加算されていきます
【試してみたこと】
値の取得にてspan要素に氏名がテキストで含まれることから
//span[contains(text(),"山田")] とした場合、山田 太郎 という値が取れました。
これを利用して
①Tr値を取得させ、文字列連結で詳細をクリックさせる
②直接該当氏名の詳細をクリック といずれかの方法で解決できるのではないかと考えました。
①をやるために ブラウザ関連 表の値の取得 のスクリプトから、
行番号の項目を削除して実施してみましたがだめでした。
次に要素を見る限りどちらも同じテーブルネームの配下にありそうでしたので
//*[@id="テーブルネーム"]/span[contains(text(),"山田")]
とし値の取得を試みましたが、これもだめでした。
最悪、1行づつ拾っていき、正誤判定を繰り返す という方法を考えているのですが
素人目に要素を見る限り、同じ<tr>配下に存在しているため
何かよい方法があるのではないかと思い投稿させていただいております。
outerHTML追記
1行目氏名欄のouterHTML
<td class="mg_normal" colspan="2"><input type="checkbox" name="ABCDEF123456@YYYY-MM-DDの日付が入ります" id="ABCDEF123456@YYYY-MM-DDの日付が入ります" checked=""><label for="ABCDEF123456@YYYY-MM-DDの日付が入ります"><span id="">対象はチェックを入れてください</span></label> <br> <span id="EmpNo1">社員管理番号が入ります</span> <span id="EmpNm1">山田 太郎</span></td>
1行目詳細ボタンのOuterHTML
<input type="image" id="BTNDTL271510_0" name="BTNDTL271510_0" border="0" src="../images/buttons/detailBtnDark.gif" onmouseover="document.getElementById('BTNDTL271510_0').src='../images/buttons/detailBtnBright.gif'; document.getElementById('BTNDTL271510_0').style.cursor='hand'; document.getElementById('BTNDTL271510_0').style.cursor='pointer'; " onmouseout="document.getElementById('BTNDTL271510_0').src='../images/buttons/detailBtnDark.gif';" onclick="getElementById('@SRACT').value='BackUpAndShowSingleAttendanceAction';getElementById('@SRSNDF').value='FormListDailyDetails';getElementById('@SRCMD2').value='0';getElementById('@SRCMD0').value='271510';var el = getElementById('BTNDTL271510_0');if (el) {el.disabled=true;}FormListDailyDetails.submit();" style="cursor: pointer;">