[英]how to click the multiple checkboxes in selenium webdriver?
因為我想單擊 selenium webdriver 中的多個復選框,所以我使用“id”webelement 來單擊但我面臨的問題意味着我的 HTML 中的所有復選框 ID 都是相同的,所以無論如何要單擊多個復選框?
我在這里發布我的 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>
第二個復選框:
<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>
第三個復選框:
</tbody>
如何單擊具有相同 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();
}
單擊每一行的第一個和第二個復選框:
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.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.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();
我使用這樣的 xpath 來選擇特定的復選框,但我不知道我們是否可以這樣使用 xpath? 還有其他寫xpath的好方法嗎?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.