java - 如何使用 Selenium 将值输入到表格中的一组文本字段

标签 java selenium xpath selenium-webdriver

我想在表格中使用 selenium 向一组文本字段输入值,如下所示。 enter image description here

我尝试过这种方式,但没有成功并引发了一个 InvalidElementStateException

 List<WebElement> marks = driver.findElements(By.xpath(".//table/tbody/tr/td/input"));
    for (WebElement mark : marks) {
    mark.sendKeys("10");
    }

编辑: 在我的 html 中,td 还包含一个额外的隐藏输入。

<tbody>
<tr class="text-center student-mark" id="1">
    <td class="text-left">Name</td>

    <td class="activityTableBody hidden" >
        <input type="text" class="table-input 55630af2a0c4655a1ce06fcd_classTest" 
               id="55630af2a0c4655a1ce06fcd_classTest_556da05c699e70287ca203b0_classTest" value="0">
    </td>

    <td class="activityTableBody" >
        <input type="text" class="table-input 55630af2a0c4655a1ce06fcd_activity1" 
               id="55630af2a0c4655a1ce06fcd_activity1_556da05c699e70287ca203b0_Task-1" value="0">
    </td>

    <td class="activityTableBody" >
        <input type="text" class="table-input 55630af2a0c4655a1ce06fcd_activity2" 
               id="55630af2a0c4655a1ce06fcd_activity2_556da05c699e70287ca203b0_Task-1" value="0">
    </td>

    <td class="activityTableBody">
        <input type="text" class="table-input 55630af2a0c4655a1ce06fcd_activity3" 
               id="55630af2a0c4655a1ce06fcd_activity3_556da05c699e70287ca203b0_Task-1" value="0">
    </td>

    <td class="activityTableBody" >
        <input type="text" class="table-input 55630af2a0c4655a1ce06fcd_activity4" 
               id="55630af2a0c4655a1ce06fcd_activity4_556da05c699e70287ca203b0_Task-1" value="0">
    </td>

    <td class="activityTableBody" >
        <input type="text" class="table-input 55630af2a0c4655a1ce06fcd_activity5" 
               id="55630af2a0c4655a1ce06fcd_activity5_556da05c699e70287ca203b0_Task-1" value="0">
    </td>

    <td class="tableBodySA hidden" >
        <input type="text" class="table-input 55630af2a0c4655a1ce06fcd_markSA"   value="0">
    </td>
    <td class="tableBodySA hidden" *emphasized text*>
        <input type="text" class="table-input saMark 55630af2a0c4655a1ce06fcd_markSA100" width="20%"  value="0">
    </td>

</tr>
.
.
</tbody>

最佳答案

您应该在没有类 'hidden' 的 td 中选择 input

List<WebElement> marks = driver.findElements(By.xpath(
                ".//table/tbody/tr/td[contains(@class ,'activityTableBody' ) and not(contains (@class ,'hidden'))]/input"));
        for (WebElement mark : marks) {
            Integer studentMark = i++ % 6;
            System.out.println(studentMark);
            mark.click();
            mark.sendKeys(Integer.toString(studentMark));
        }

关于java - 如何使用 Selenium 将值输入到表格中的一组文本字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35861720/

相关文章:

python - 使用 xpath 选择子文本节点

html - XPath 可以用来解析静态 HTML/JSP 页面吗

xml - 如何使用VBScript对XML中的节点进行分组

.net - PowerShell 中的 XPath

java - 如何发送红外代码,将字符串转换为 "IR string"

java - 在 Eclipse 中配置字符串外部化以使用 ${key} 作为字段名称

java - Android 软键盘打乱了我的布局

python - 使用 Selenium 在 Python 中获取所有表元素

java - 交换 XML (WSDL) 文件中的元素属性值?

python - 如何循环浏览并点击相关项目