使用TestNG的Selenium webdriver - 无法从标签中找到输入字段的正确Xpath

时间:2013-07-30 15:11:07

标签: xpath selenium-webdriver xpath-2.0

这里我想填写输入字段,但无法通过Xpath访问它... Plz帮帮我..

以及守则如下......

<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']”)); < / p>

ele.sendKeys(“PM 001”);

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

此处输入和div id的name属性值将动态更改...

所以iam试图通过标签和前面的输入标签找到...

先谢谢

2 个答案:

答案 0 :(得分:1)

你的XPath是完全错误的。

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

你的目标是什么。

如果name的{​​{1}}没有变化,您可以通过以下方式获取:

input

你的XPath只是因为driver.findElement(By.name("pName")); 在“进程名称”周围有一个很多的whitespacing而在第一个障碍中失败,所以使用span强制它剥离在比较之前,文本中有空格。

你也会在下一站徘徊,normalize-space ......你在这里是preceding的水平,它就像你可以去的那样深,它没有'先于'它首先。

答案 1 :(得分:0)

// span [normalize-space()='Process Name'] // ancestor :: tr // div //输入[@type ='text']