我需要选择具有相同ID的复选框 HTML:
<label class="table-checkbox-label" for="record-12034">
<input id="record-12034" class="table-checkbox" type="checkbox"/>
</label>
</td>
<td>91363007</td>
<td>EC4N</td>
<td>true</td>
<td>ACTIVE</td>
</tr>
<tr data-id="12201">
<td>
<label class="table-checkbox-label" for="record-12201">
<input id="record-12201" class="table-checkbox" type="checkbox"/>
</label>
</td>
list of checkboxes。 我将合同ID发送到合同ID下面的过滤器框,就像一个自动完成框。它将根据输入给出结果。 like this 但是这里我的selenium代码点击了复选框列表中的第一个复选框,如图1所示。
请提出任何建议
编辑: : 关键字功能的代码:
public void filter(String objectName,String testData) throws InterruptedException,IOException {
WebDriverWait wait = new WebDriverWait(driver, 15);
wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath(".//*[@id='content']/div[7]/table/thead/tr[2]/td[2]/input")));//wait for textbox
driver.findElement(By.xpath(".//*[@id='content']/div[7]/table/thead/tr[2]/td[2]/input")).sendKeys(testData);//send data to textbox
System.out.print("Text box is now visible");
driver.findElement(By.xpath(".//*[starts-with(@id,'record')]")).click();//click on checkbox
driver.findElement(By.xpath(".//*[@id='content']/div[7]/table/thead/tr[2]/td[2]/input")).clear();//clear textbox
}
阅读excel文件的代码:
public void ASRTaccounts() throws IOException, InterruptedException, EncryptedDocumentException, InvalidFormatException, AWTException {
keyword = new keywords();
List<String> data = new ArrayList<String>();
File file = new File("C:\\RDMT test\\rdmt_test\\RDMT_\\LeadSuite.xlsx");
Workbook workbook = WorkbookFactory.create(file);
DataFormatter formatter = new DataFormatter();
Sheet sheet = workbook.getSheet("login");
for (Row row : sheet) {
for (Cell cell : row) {
data.add(formatter.formatCellValue(cell));
}
}
System.out.println(data);
for (int i=3;i<data.size();i++){
if (data.get(i).equals("filter")){
String key = (String) data.get(i);
String testData = (String) data.get(i+1);
String objectName = (String) data.get(i+2);
System.out.println(key);
System.out.println(testData);
System.out.println(objectName);
keyword.filter(objectName,testData);
}
答案 0 :(得分:0)
问题在于选择要单击的复选框。
driver.findElement(By.xpath(".//*[starts-with(@id,'record')]")).click();
这将找到所有包含&#34;记录&#34;的元素。在他们的ID中(这些都是你的情况下的复选框)并且只返回第一个。
您需要使用类似driver.findElement(By.xpath(".//input[@id='record-idofcheckboxyouwanttoclick']")).click();
<td>
元素,然后找到包含{{1}的<label>
前一个兄弟姐妹你想点击的(复选框)。
答案 1 :(得分:0)
可以使用preceding xpath函数选择出现在文本框之前的复选框。如果您仍然遇到同样的问题,请尝试关注并告知我们:
public void filter(String objectName,String testData) throws InterruptedException,IOException {
WebDriverWait wait = new WebDriverWait(driver, 15);
wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath(".//*[@id='content']/div[7]/table/thead/tr[2]/td[2]/input")));//wait for textbox
driver.findElement(By.xpath(".//*[@id='content']/div[7]/table/thead/tr[2]/td[2]/input")).sendKeys(testData);//send data to textbox
System.out.print("Text box is now visible");
driver.findElement(By.xpath(".//*[@id='content']/div[7]/table/thead/tr[2]/td[2]/input/preceding::input[1]")).click();//click on checkbox
driver.findElement(By.xpath(".//*[@id='content']/div[7]/table/thead/tr[2]/td[2]/input/preceding::input[1]")).clear();//clear textbox
}