如何使用三个项目中的xpath查找名称?

时间:2017-08-08 08:42:19

标签: selenium xpath selenium-webdriver

我已经编写了一个xpath来查找标签中的名称,但事情是在“th”标签中附加了三个项目,用“br”标签分隔。如何只查找第一个项目,在这种情况下,三个名称?这是我尝试过的:

//td[@class='data']/table//th

项目内的元素是:

<td class="data" valign="top" nowrap="">

                                        <table width="350">

                                            <tbody><tr>    
                                                <td valign="top" nowrap="">Owner Name &amp;<br>Mailing Address:</td>
                                                <th align="left" valign="top" nowrap="">

                                                <!-- ---------- OWNER NAME ---------- -->
                                                PADILLA ISAI &amp; JOSEFINA<br>


                                                <!-- ---------- MAILING ADDRESS ---------- -->

                                                        <!-- ---------- MAILING ADDRESS (MAIL TO) ---------- -->


                                                        <!-- ---------- MAILING ADDRESS (ADDR1 AND ADDR2) ---------- -->
                                                        8227 FINDLAY ST<br>


                                                        <!--
                                                        ------------------------------------------------
                                                        'RA 09/11/2012: 
                                                            Changed order of Owner / Address to :

                                                                Owner Name(s)
                                                                MailTo
                                                                Addr_1
                                                                Addr_2
                                                                City
                                                                State
                                                                Zip
                                                                Country
                                                        ------------------------------------------------
                                                        8227 FINDLAY ST
                                                        ------------------------------------------------
                                                        -->

                                                        <!-- ---------- MAILING ADDRESS (CITY-STATE-ZIP OR COUNTRY)---------- -->
                                                        HOUSTON&nbsp;TX&nbsp;77017-2328<br>

                                                            <!--<br />-->


                                               </th>
                                            </tr>
                                        </tbody></table>

                                    </td> 

通过我的表达,我得到的结果是:

DURAN FRANCISCO & AURORA
4010 BALMORHEA AVE
HOUSTON TX 77039-2510

但我希望只得到:

DURAN FRANCISCO & AURORA

在一般情况下,我可能会选择:

//td[@class='data']/table//th/text()[1]

但是,selenium也不支持文本索引。我该怎么做才能从th标签中获取名称?

2 个答案:

答案 0 :(得分:3)

尝试以下代码并告知我,以防万一它无法返回预期结果:

element = driver.find_element_by_xpath("//td[@class='data']/table//th")
print(driver.execute_script("return arguments[0].childNodes[2].textContent", element).strip())

答案 1 :(得分:0)

我有以下方法来执行直接不支持selenium的xpath:

JavascriptExecutor js = (JavascriptExecutor)driver;
Object message = js.executeScript("var value = document.evaluate(\"//td[@class='data']/table//th/text()[1]\",document, null, XPathResult.STRING_TYPE, null ); return value.stringValue;");
System.out.println(message.toString());

还有问题让我知道:)

this answer

获取更多详情