私はセレンを学んでいる学生で、ターゲット文書と同じ行にあるチェックボックス(チェックマークを付ける)を設定しようとしています。ここでは、行がどのように見えるかです:Xpath検索による改善?
<span><input>Checkbox</input></span> - <span>_lblDocumentCategoryDescription</span> - <span>_lblDocumentdescription</span>
各行は、その行のチェックボックス、カテゴリや説明で構成されています。私は説明を提供し、対応するチェックボックスを行頭に設定する必要があります。
私は方法が非常に遅いので、私はより良い方法を探していますが、私はそれを複数回呼び出すことができ、遅さを複合しています。問題のページには、おそらく追加されるかもしれない315の異なる固定ドキュメントがあります(差し込み印刷機能へ)。私は通常少なくとも3行を追加して検索を実行する必要があります
私のCSSの知識は限られており、DOMをトラバースしているようです(親:?)いくつかのJavaScript、私は避けようとしている。私は、JSを実行すると正しくユーザーをエミュレートしないので、xpathが解決策であると思います。
私が知っているように、より速く、より良い、より効率的な解決策がなければなりません。ここで
は、私が現在使用しているものです:
メソッド呼び出し CPTools、setStupidCheckbox( "サブリース補遺"、真の);
方法:ここ
public CPTools setStupidCheckbox(String documentToPrint, Boolean onIfTrue) {
this.log.trace("Starting: setStupidCheckbox; parameter: documentToPrint " + documentToPrint);
String xpathForCheckboxes = "/ancestor::tr//input";
try {
String xpathForDocumentDescriptions = String.format("//span[contains(text(), '%s')]", documentToPrint);
tools.waitForElement(By.xpath(xpathForDocumentDescriptions), 2);
if (driver.findElement(By.xpath(xpathForDocumentDescriptions)).isDisplayed()) {
driver.findElementByXPath(xpathForDocumentDescriptions + xpathForCheckboxes).click();
}
} catch (org.openqa.selenium.NoSuchElementException | ElementNotVisibleException e) {
}
this.log.trace("Ending: setStupidCheckbox");
return this;
}
は、テーブルの行のための完全なXPathである(IDの動的部分_ctl316ある):すべての可能な助けを事前に
<tr class="DataGridCellData">
<td class="DataGridCellDataCenterAligned">
<span class="DataLabel"><input id="ctl01_PageBody_grdDocument_ctl316_chkSelect" name="ctl01$PageBody$grdDocument$ctl316$chkSelect" onclick="javascript:uiHelper.GridCellCheck(this, 'chkAllSelect');" type="checkbox"></span>
</td><td>
<span id="ctl01_PageBody_grdDocument_ctl316_lblDocumentCategoryDescription">Approval Form</span>
</td><td align="left">
<span id="ctl01_PageBody_grdDocument_ctl316_lblDocumentdescription">Sublease Addendum</span>
</td><td align="center">
</td>
</tr>
おかげ。
あなたが取得したい要素? – NarendraR
「// input [contains(@onclick、 'chkAllSelect')]」はどうですか? –
私の質問のあいまいさのため申し訳ありません - 私はチェックボックスをチェックしようとしていますが、それらの315があります - 私が知っている唯一の参考資料は、文書の説明のスパン(サブリースの補遺)に存在するテキストです。 –