查找文本的XPath,它是Div标签以及span标签

时间:2017-10-05 20:50:12

标签: html css xpath selenium-webdriver domxpath

很抱歉,如果之前讨论过这个问题。我试过搜索但没找到完全匹配。我的问题是我的HTML代码很低,

<div class="column1">
<div>
<div class="name">
Dynamic Name
<span class="id" title="ID">Dynamic ID</span>
</div>
</div>
</div>

我正在寻找XPath来获取文本动态名称。 这是我尝试过的不起作用

1. //div/div[@class='name'] which is finding text Dynamic Name Dynamic ID

2. //div/span[@class='id']/preceding-sibling::text()

自动态名称&amp;动态ID,都是动态值,我不能使用split&amp;使用名称,因为我们不知道在哪里拆分它。 在此先感谢您的时间和帮助

3 个答案:

答案 0 :(得分:1)

这个XPath,

normalize-space(//div[@class="name"]/text())

将根据要求为您的HTML返回"Dynamic Name"

  

谢谢,但它有一些语法错误,因为我尝试使用Firepath并给出一些错误。不确定是哪一个。

狂野猜测:看看是否

//div[@class="name"]/text()

避免语法错误(这会限制您的工具,因为normalize-space()是一个正确的XPath 1.0函数)并选择您的目标文本(尽管有无关的空格)。

答案 1 :(得分:0)

由于您声明XPath //div/div[@class='name']正在运行但返回的信息太多,我们可以抓取该元素,抓取innerHTML,然后拆分第一个<,第一个Stringtrim()以获取答案。

driver.findElement(By.xpath("//div/div[@class='name']")).getAttribute("innerHTML").split("<")[0].trim();

答案 2 :(得分:-1)

在Google Chrome开发者工具中,您可以右键单击指定的元素以获取其XPath或选择器。

enter image description here

对于HTML,结果为:

  • XPath:/html/body/div/div/div
  • 选择器:body > div > div > div