首页 文章

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

提问于
浏览
-1

这里我想填写输入字段,但无法通过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']”));

ele.sendKeys(“PM 001”);

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

这里输入和div id的name属性值将动态改变...

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

提前致谢

2 回答

  • 1

    你的XPath是完全错误的 .

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

    你是追求的 .

    如果 inputname 没有改变,你可以通过以下方式获得:

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

    你的XPath只是因为 span 在"Process Name"周围有一个 lot 的whitespacing而在第一个障碍中失败,所以在比较之前使用 normalize-space 强制它从文本中去掉空格 .

    你也会在下一站摔倒, preceding 你尽可能地去了 span 's level here, it',在它首先出现之前's nothing ' .

  • 0

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

相关问题