使用TestNG的Selenium Web驱动程序-无法从标签中找到正确的输入字段Xpath



这里我想填写输入字段,但Xpath无法访问它。。。请帮帮我。。

代码如下。。。。

<table class="detailList" border="0" cellpadding="0" cellspacing="0">
    <tbody>
        <tr>
            <td class="labelCol">
                <div id="div1">
                    <div class="pbSubsection">
                        <table class="detailList" border="0" cellpadding="0" cellspacing="0">
                            <tbody>
                                <tr>
                                    <td class="data2Col" colspan="2">
                                        <span style="font-Size:12px;">
                                            Process Name
                                        </span>
                                    </td>
                                </tr>
                            </tbody>
                        </table>
                    </div>
                </div>
            </td>
            <td style="text-align:left;" class="data2Col">
                <div id=div2">
                    <div class="pbSubsection">
                        <table class="detailList" border="0" cellpadding="0" cellspacing="0">
                            <tbody>
                                <tr>
                                    <td class="data2Col" colspan="2">
                                        <div id="div3" class="requiredInput">
                                            <div id="div4" class="requiredBlock"></div>
                                            <input name="pName" style="width:50%;" type="text">
                                        </div>
                                    </td>
                                </tr>
                            </tbody>
                        </table>
                    </div>
                </div>
            </td>
        </tr>
    </tbody>
</table>

我正在尝试

WebElement ele=driver.findElement(By.xpath("//span[text()='Process Name']/preceding::td/div/input[@type='text']");

ele.sendKeys("PM 001");

但在此之前,我知道它是错误的。。请帮我解决这个问题。。。。。。。

这里input和div id的name属性值将动态更改。。。

所以我试图通过标签和前面的输入标签来查找。。。

提前感谢

您的XPath完全错误。

//span[normalize-space(text())='Process Name']/ancestor::tr/descendant::input

就是你追求的。

如果inputname没有改变,你可以简单地通过:获得它

driver.findElement(By.name("pName"));

XPath在第一个障碍处失败,原因很简单,因为span在"进程名称"周围有很多的空白,所以在比较之前,使用normalize-space强制它从文本中去除空白。

然后你也在下一站摔倒了,preceding。。。你在这里是span的级别,它尽你所能深入,一开始就没有什么"先于"它。

//span[normalize-space()="进程名称"]//祖先:tr//div//input[@type='text']

最新更新