簡體   English   中英

如何單擊 selenium webdriver 中的多個復選框?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM