简体   繁体   English

如何单击 selenium webdriver 中的多个复选框?

[英]how to click the multiple checkboxes in selenium webdriver?

As i want to click the multiple checkboxes in selenium webdriver, so that im using the 'id' webelement to click but what problem i'm facing means all the checkboxes id's are same in my HTML so is there anyway to click multiple checkboxes?因为我想单击 selenium webdriver 中的多个复选框,所以我使用“id”webelement 来单击但我面临的问题意味着我的 HTML 中的所有复选框 ID 都是相同的,所以无论如何要单击多个复选框?

Here im posting my HTML code: first check box:我在这里发布我的 HTML 代码:第一个复选框:

<tbody role="rowgroup">
<tr data-uid="6adb7eb4-7169-4ab8-aef4-cc8b2774beac" role="row" class="k-state-selected" aria-selected="true"><td style="text-align:left" role="gridcell">Order</td><td style="text-align:left" role="gridcell">55</td><td style="text-align:left" role="gridcell">ORD55</td><td style="text-align:right" role="gridcell">2,400.00</td><td style="text-align:right" role="gridcell">2,400.00</td><td style="text-align:center" role="gridcell" id="GridPayRecp_active_cell" class="" aria-describedby="c7c68ce1-edc3-4958-a6c1-2611999356b0 GridPayRecp_active_cell"><input type="checkBox" id="chkSelect" onclick="EditchkSelect()" height="15px;" width="15px;" checked=""></td><td style="text-align:right" role="gridcell">2,400.00</td></tr><tr class="k-alt" data-uid="3f3d1588-6f42-4c22-bdda-28c090ece58b" role="row"><td style="text-align:left" role="gridcell">Order</td><td style="text-align:left" role="gridcell">57</td><td style="text-align:left" role="gridcell">ORD57</td><td style="text-align:right" role="gridcell">3,600.00</td><td style="text-align:right" role="gridcell">3,597.00</td><td style="text-align:center" role="gridcell"><input type="checkBox" id="chkSelect" onclick="EditchkSelect()" height="15px;" width="15px;"></td><td style="text-align:right" role="gridcell">0.00</td></tr><tr data-uid="1ab110de-fbe6-4954-b612-39c3cb7fc8ba" role="row"><td style="text-align:left" role="gridcell">Proforma</td><td style="text-align:left" role="gridcell">90</td><td style="text-align:left" role="gridcell">PRO90</td><td style="text-align:right" role="gridcell">3,600.00</td><td style="text-align:right" role="gridcell">3,366.00</td><td style="text-align:center" role="gridcell"><input type="checkBox" id="chkSelect" onclick="EditchkSelect()" height="15px;" width="15px;"></td><td style="text-align:right" role="gridcell">0.00</td></tr>
</tbody>

second checkbox:第二个复选框:

<tbody role="rowgroup">
<tr data-uid="6adb7eb4-7169-4ab8-aef4-cc8b2774beac" role="row" class="k-state-selected" aria-selected="true"><td style="text-align:left" role="gridcell">Order</td><td style="text-align:left" role="gridcell">55</td><td style="text-align:left" role="gridcell">ORD55</td><td style="text-align:right" role="gridcell">2,400.00</td><td style="text-align:right" role="gridcell">2,400.00</td><td style="text-align:center" role="gridcell" id="GridPayRecp_active_cell" class="" aria-describedby="c7c68ce1-edc3-4958-a6c1-2611999356b0 GridPayRecp_active_cell"><input type="checkBox" id="chkSelect" onclick="EditchkSelect()" height="15px;" width="15px;" checked=""></td><td style="text-align:right" role="gridcell">2,400.00</td></tr><tr class="k-alt" data-uid="3f3d1588-6f42-4c22-bdda-28c090ece58b" role="row"><td style="text-align:left" role="gridcell">Order</td><td style="text-align:left" role="gridcell">57</td><td style="text-align:left" role="gridcell">ORD57</td><td style="text-align:right" role="gridcell">3,600.00</td><td style="text-align:right" role="gridcell">3,597.00</td><td style="text-align:center" role="gridcell"><input type="checkBox" id="chkSelect" onclick="EditchkSelect()" height="15px;" width="15px;"></td><td style="text-align:right" role="gridcell">0.00</td></tr><tr data-uid="1ab110de-fbe6-4954-b612-39c3cb7fc8ba" role="row"><td style="text-align:left" role="gridcell">Proforma</td><td style="text-align:left" role="gridcell">90</td><td style="text-align:left" role="gridcell">PRO90</td><td style="text-align:right" role="gridcell">3,600.00</td><td style="text-align:right" role="gridcell">3,366.00</td><td style="text-align:center" role="gridcell"><input type="checkBox" id="chkSelect" onclick="EditchkSelect()" height="15px;" width="15px;"></td><td style="text-align:right" role="gridcell">0.00</td></tr></tbody>

third checkbox:第三个复选框:

</tbody>

How to click on all checkboxes with the same ID, (Java example):如何单击具有相同 ID 的所有复选框,(Java 示例):

WebDriverWait wait = new WebDriverWait(driver, 10);

List<WebElement> checkboxes = wait.until(ExpectedConditions
        .presenceOfAllElementsLocatedBy(By.cssSelector("tr[role=row] input#chkSelect[type=checkBox]")));

for (WebElement checkbox : checkboxes) {
    wait.until(ExpectedConditions.elementToBeClickable(checkbox)).click();
}

Click first and second checkboxes for each row:单击每一行的第一个和第二个复选框:

WebDriverWait wait = new WebDriverWait(driver, 10);

List<WebElement> rows = wait.until(ExpectedConditions
        .presenceOfAllElementsLocatedBy(By.cssSelector("tr[role=row]")));

for (WebElement row : rows) {
    List<WebElement> checkboxes = driver.findElements(By.cssSelector("input#chkSelect[type=checkBox]"));
    wait.until(ExpectedConditions.elementToBeClickable(checkboxes.get(0))).click();
    wait.until(ExpectedConditions.elementToBeClickable(checkboxes.get(1))).click();

}

Wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("/html/body/div[1]/div[2]/section[2]/section/div/div[2]/div/div/form/div/div/div/div[2]/div[1]/div/div[1]/div[2]/table/tbody/tr[1]/td[6]/input"))); Wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("/html/body/div[1]/div[2]/section[2]/section/div/div[2]/div/div/form/div/ div/div/div[2]/div[1]/div/div[1]/div[2]/table/tbody/tr[1]/td[6]/input"))); Wait.until(ExpectedConditions.elementToBeClickable(By.xpath("/html/body/div[1]/div[2]/section[2]/section/div/div[2]/div/div/form/div/div/div/div[2]/div[1]/div/div[1]/div[2]/table/tbody/tr[1]/td[6]/input"))).click(); Wait.until(ExpectedConditions.elementToBeClickable(By.xpath("/html/body/div[1]/div[2]/section[2]/section/div/div[2]/div/div/form/div/ div/div/div[2]/div[1]/div/div[1]/div[2]/table/tbody/tr[1]/td[6]/input"))).click(); Wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("/html/body/div[1]/div[2]/section[2]/section/div/div[2]/div/div/form/div/div/div/div[2]/div[1]/div/div[1]/div[2]/table/tbody/tr[2]/td[6]/input"))); Wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("/html/body/div[1]/div[2]/section[2]/section/div/div[2]/div/div/form/div/ div/div/div[2]/div[1]/div/div[1]/div[2]/table/tbody/tr[2]/td[6]/input"))); Wait.until(ExpectedConditions.elementToBeClickable(By.xpath("/html/body/div[1]/div[2]/section[2]/section/div/div[2]/div/div/form/div/div/div/div[2]/div[1]/div/div[1]/div[2]/table/tbody/tr[2]/td[6]/input"))).click(); Wait.until(ExpectedConditions.elementToBeClickable(By.xpath("/html/body/div[1]/div[2]/section[2]/section/div/div[2]/div/div/form/div/ div/div/div[2]/div[1]/div/div[1]/div[2]/table/tbody/tr[2]/td[6]/input"))).click();

i used the xpath like this to select particular checkboxes, but i dont know whether can we use the xpath like this or not?我使用这样的 xpath 来选择特定的复选框,但我不知道我们是否可以这样使用 xpath? is there any other good way to write the xpath?还有其他写xpath的好方法吗?

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM