【发布时间】:2016-12-01 20:34:15
【问题描述】:
我有一个包含以下代码的 HTML 页面:
<table class="report" style="width:100%">
<tbody>
<tr>
<th/>
<th>Position Open
<br>
<span class="timestamp">27/7/2016 16:12:12</span>
</br>
</th>
<th>Position closed
<br>
<span class="timestamp">27/7/2016 16:12:42</span>
</br>
</th>
</tr>
<tr>
<td>
<span dir="ltr">EURJPY</span>
</td>
<td>116.098</td>
<td>116.156</td>
</tr>
</tbody>
</table>
在此页面上,我有另一个具有相同类属性“report”的表,但只有此表包含文本“Position Open”和“Position Closed”。 我需要选择包含“EURJPY”、“116.098”和“116.156”数据的元素。 这些元素的内容正在发生变化,即“EURJPY”可能会出现“EURUSD”或“GBPCAD”等。 我尝试了以下代码:
driver.findElement(By.xpath("//span[text()='Position Open']/ancestor::table[@class='report'](//tr)[2]/td/span")).getAttribute("textContent");
获取第一个必填字段文本但出现Invalid selector 错误。
【问题讨论】:
-
我认为你应该尝试删除
(//tr)中的括号 -
您的 xpath 和您的需求逻辑很清楚。您的意思是“持仓开仓”OR“持仓平仓”吗?您的尝试仅测试未平仓头寸。另外,你说你想选择元素,但 FindElement() 只选择一个元素,你的例子表明你只想要跨度中包含的文本。