如果webtable元素在td标记内,如何使用xpath访问webtable元素

时间:2017-04-25 02:25:30

标签: java html xpath selenium-webdriver

我无法访问table2中的webtable元素,请参阅下面的页面源:

<table id="table1">
    <tr class="head">
        <td class="left" colspan="2">
            <!--PAGE LINKS-->
        </td>
    </tr>
    <tr>
        <td class="left_link">
            <h1>
                <a name="nav_home" href="index.html" id="home_link" class="home">HOME</a><br>
                <a name="nav_adopt" href="adoption.html" id="adoption_link">ADOPTION</a><br>
                <a name="nav_about" href="about.html" id="about_link">ABOUT</a><br>
                <a name="nav_contact" href="contact.html" id="contact_link">CONTACT</a><br>
            </h1>
        </td>
        <td class="content">
            <h1>
                CONTACT US
            </h1>
            <hr>
            <p>
                Use the form below to contact us if you have any questions, queries or even any requests.
                We are always happy to hear from you all.
            </p>
            <h1 class="subhead">Contact Form</h1>
            <form name="message_form">
                <table id="table2" class="inner_table">
                    <tr>
                        <td>Enter Name</td>
                        <td><input type="text" name="name_field"></td>
                    </tr>
                    <tr>
                        <td></td>
                        <td>
                        <input type="radio" id="rinfo" name="rbutton" value="information">Information
                        <input type="radio" id="rdona" name="rbutton" value="Donation">Donation
                        <input type="radio" id="radop" name="rbutton" value="Donation">Adoption
                        </td>
                    </tr>

例如,我无法访问table2中的名称。

我尝试使用以下功能进行访问,但失败了。

driver.findElements(By.xpath(“// * [@类= '表1'] / tbody的/ TR [2] / TD [2] /形式/表[@类= 'inner_table'] / TR [ 1] / TD [1))

5 个答案:

答案 0 :(得分:2)

请尝试以下xpath

//table[@id='table2']/..//following::input[@name='name_field']

xpath的说明: - 使用id标记的<table>属性,并使用<input>关键字继续following标记。

以上xpath将找到“输入名称”字段文本框。

注意: - 使用absolute xpath而不是relative xpath

答案 1 :(得分:0)

不建议在selenium上使用xpath,因为元素可能会发生变化,如果添加其他元素,则必须重构选择器。

要回答您的问题,您可以使用table2的ID并选择所需的元素。

答案 2 :(得分:0)

尝试xpath,如下所示:

访问名为'name_field'的输入文件,使用xpath下面的

driver.findElement(By.xpath("//table[@id='table2' and @class= 'inner_table']//input[@type='text' and @name='name_field']")

希望它会有所帮助。

答案 3 :(得分:0)

它应该是一个简单的input[name='name_field']的CSS选择器,或者如果不够具体,请使用#table2 input[name='name_field']

答案 4 :(得分:0)

在Web表中,您可以使用xPath到达元素的父元素,然后找到td标签的preceding-siblingfollowing-sibling

本教程将帮助您: http://www.seleniumtests.com/2011/10/using-xpath-to-reach-parent-of-element.html