我已经编写了一个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 &<br>Mailing Address:</td>
<th align="left" valign="top" nowrap="">
<!-- ---------- OWNER NAME ---------- -->
PADILLA ISAI & 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 TX 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标签中获取名称?
答案 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());
还有问题让我知道:)
获取更多详情