亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何單擊列表中某些數據的復選框

如何單擊列表中某些數據的復選框

jeck貓 2023-03-31 16:39:27
我需要單擊列中針對列中某些數據的兩個復選框。這兩件事屬于同一張表。我試圖讀取整個表格,然后嘗試讀取該特定列并根據必要的數據,嘗試選擇行,如果這兩個數據不存在,則必須移至下一頁,直到兩個數據都存在不在同一頁上。WebElement mytable = driver.findElement(By.xpath("//*[@id='gridBodyTable' and @class='ms-crm-List-Data']/tbody"));List<WebElement> rows_table = mytable.findElements(By.tagName("tr"));   int rows_count = rows_table.size();int count = 0;for (int row = 0; row < rows_count; row++) {    //List<WebElement> Columns_row = rows_table.get(row).findElements(By.tagName("td"));                List<WebElement> Columns_row = driver.findElements(By.xpath("//table[@id='gridBodyTable']/tbody/tr/td[18]"));    List<String> strings = new ArrayList<String>();    for (WebElement celtext : Columns_row) {        strings.add(celtext.getText());        System.out.println(celtext);        Thread.sleep(2000);         if (celtext.getText().equals("Uganda") && celtext.getText().equals("Dadaab")) {            Columns_row.get(0).click();            count++;        }        if (count == 2) {            break;        }    }    if (count < 2) {        driver.findElement(By.xpath("//*[@id='page_R0' and @title='Load Next Page']")).click();        readTabl();    }}它只是點擊下一頁而不是選擇那兩行
查看完整描述

3 回答

?
森欄

TA貢獻1810條經驗 獲得超5個贊

  1. 我不喜歡這個/tbody/tr/td[18]節,因為它可能會更改

  2. 最好將您的國家/地區名稱條件放入 XPath 而不是通過WebElements進行迭代

建議的 XPath 表達式:

//table/tr/td[count(//table/tr/th[.='Put?your?desired?column?name?here']/preceding-sibling::th)?+?1]/*[text()='Uganda'?or?text()='Dadaab']

更多信息:

  • XPath 教程

  • XPath 軸

  • XPath 運算符和函數


另請注意,使用HtmlElements框架的Table類可以更輕松地處理HTML 表格。


查看完整回答
反對 回復 2023-03-31
?
月關寶盒

TA貢獻1772條經驗 獲得超5個贊

點擊部分的邏輯存在問題:


if 檢查單元格文本是否等于“Uganda”和“Dadaab”,它總是false. 您需要使用或||


如果找到匹配項,Columns_row.get(0)則單擊第一行中的復選框,而不是帶有文本的復選框


for (WebElement celtext : Columns_row) {

    if (celtext.getText().contains("Uganda") || celtext.getText().contains("Dadaab")) {

        celtext.click();

        count++;

    }

}


查看完整回答
反對 回復 2023-03-31
?
繁花如伊

TA貢獻2012條經驗 獲得超12個贊

您可以嘗試在 xpath 中使用條件來獲取列行。這樣,如果您的列行有一個帶有輸入標簽的兄弟,理想情況下應該是一個復選框,那么您可以嘗試下面的代碼


WebElement column = driver.findElement(By.xpath("//table[@id='gridBodyTable']/./td[(contains(text,'Uganda')) or (contains(text,'Dadab'))]"))

 List<WebElement> checkboxes = column.findElements(By.xpath("./input"))


查看完整回答
反對 回復 2023-03-31
  • 3 回答
  • 0 關注
  • 148 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號