首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过Xpath获取值

通过Xpath获取值
EN

Stack Overflow用户
提问于 2017-02-23 11:39:49
回答 2查看 559关注 0票数 2

我试图通过Xpath从我的html中检索一个值。就其价值而言,这是一个CRM web工具(微软的),它看起来像是一个iFrame,它根据在其条上选择的链接(客户、上诉等)进行更改。

代码语言:javascript
复制
<tbody><tr class="ms-crm-List-Row" oid="{665A4B9C-9658-E611-922C-441EA1745BC2}" otype="10046" otypename="new_contact_content">
			<td class="ms-crm-List-NonDataCell" align="center"><input type="checkbox" class="ms-crm-RowCheckBox" id="checkBox_{665A4B9C-9658-E611-922C-441EA1745BC2}" tabindex="0" title="A1" style=" "></td><td class="ms-crm-List-DataCell inner-grid-cellPadding"><nobr class="gridcellpadding"><a href="#" id="gridBodyTable_primaryField_{665A4B9C-9658-E611-922C-441EA1745BC2}_0" target="_self" title="A1" class="ms-crm-List-Link" tabindex="0">A1</a></nobr></td><td class="ms-crm-List-DataCell inner-grid-cellPadding ms-crm-NumbersAndDates"><nobr class="gridcellpadding">02/08/2016 12:50</nobr></td><td class="ms-crm-List-DataCell"><nobr class="gridcellpadding"></nobr></td>
		</tr><tr class="ms-crm-List-Row" oid="{675A4B9C-9658-E611-922C-441EA1745BC2}" otype="10046" otypename="new_contact_content">
			<td class="ms-crm-List-NonDataCell" align="center"><input type="checkbox" class="ms-crm-RowCheckBox" id="checkBox_{675A4B9C-9658-E611-922C-441EA1745BC2}" tabindex="0" title="A1.2" style=" "></td><td class="ms-crm-List-DataCell inner-grid-cellPadding"><nobr class="gridcellpadding"><a href="#" id="gridBodyTable_primaryField_{675A4B9C-9658-E611-922C-441EA1745BC2}_1" target="_self" title="A1.2" class="ms-crm-List-Link" tabindex="0">A2</a></nobr></td><td class="ms-crm-List-DataCell inner-grid-cellPadding ms-crm-NumbersAndDates"><nobr class="gridcellpadding">02/08/2016 12:50</nobr></td><td class="ms-crm-List-DataCell"><nobr class="gridcellpadding"></nobr></td>
		</tr><tr class="ms-crm-List-Row" oid="{6B5A4B9C-9658-E611-922C-441EA1745BC2}" otype="10046" otypename="new_contact_content">
			<td class="ms-crm-List-NonDataCell" align="center"><input type="checkbox" class="ms-crm-RowCheckBox" id="checkBox_{6B5A4B9C-9658-E611-922C-441EA1745BC2}" tabindex="0" title="A5" style=" "></td><td class="ms-crm-List-DataCell inner-grid-cellPadding"><nobr class="gridcellpadding"><a href="#" id="gridBodyTable_primaryField_{6B5A4B9C-9658-E611-922C-441EA1745BC2}_2" target="_self" title="A5" class="ms-crm-List-Link" tabindex="0">A5</a></nobr></td><td class="ms-crm-List-DataCell inner-grid-cellPadding ms-crm-NumbersAndDates"><nobr class="gridcellpadding">02/08/2016 12:50</nobr></td><td class="ms-crm-List-DataCell"><nobr class="gridcellpadding"></nobr></td>
		</tr><tr class="ms-crm-List-Row" oid="{6C5A4B9C-9658-E611-922C-441EA1745BC2}" otype="10046" otypename="new_contact_content">
			<td class="ms-crm-List-NonDataCell" align="center"><input type="checkbox" class="ms-crm-RowCheckBox" id="checkBox_{6C5A4B9C-9658-E611-922C-441EA1745BC2}" tabindex="0" title="A6" style=" "></td><td class="ms-crm-List-DataCell inner-grid-cellPadding"><nobr class="gridcellpadding"><a href="#" id="gridBodyTable_primaryField_{6C5A4B9C-9658-E611-922C-441EA1745BC2}_3" target="_self" title="A6" class="ms-crm-List-Link" tabindex="0">A6</a></nobr></td><td class="ms-crm-List-DataCell inner-grid-cellPadding ms-crm-NumbersAndDates"><nobr class="gridcellpadding">02/08/2016 12:50</nobr></td><td class="ms-crm-List-DataCell"><nobr class="gridcellpadding"></nobr></td>
		</tr><tr class="ms-crm-List-Row" oid="{6D5A4B9C-9658-E611-922C-441EA1745BC2}" otype="10046" otypename="new_contact_content">
			<td class="ms-crm-List-NonDataCell" align="center"><input type="checkbox" class="ms-crm-RowCheckBox" id="checkBox_{6D5A4B9C-9658-E611-922C-441EA1745BC2}" tabindex="0" title="A9" style=" "></td><td class="ms-crm-List-DataCell inner-grid-cellPadding"><nobr class="gridcellpadding"><a href="#" id="gridBodyTable_primaryField_{6D5A4B9C-9658-E611-922C-441EA1745BC2}_4" target="_self" title="A9" class="ms-crm-List-Link" tabindex="0">A9</a></nobr></td><td class="ms-crm-List-DataCell inner-grid-cellPadding ms-crm-NumbersAndDates"><nobr class="gridcellpadding">02/08/2016 12:50</nobr></td><td class="ms-crm-List-DataCell"><nobr class="gridcellpadding"></nobr></td>
		</tr></tbody>

我在用:

代码语言:javascript
复制
var nobrValues = _webdriverIE.FindElements(By.XPath("//nobr[@class='gridcellpadding']"));

但结果是0。意味着找不到任何东西。我也试过:

代码语言:javascript
复制
var _tableOfInterestsCount = _webdriverIE.FindElements(By.XPath("//table[@id='gridBodyTable']/tbody/tr[1]/td"));
        var nobrvalues = var nobrValues = _tableOfInterestsCount.FindElements(By.XPath("//nobr[@class='gridcellpadding']"));

但是,没有发现任何势利物(计数为0)。基本上,我希望从我的html中获得以下值中的一个(或全部):A1、A1.2、A5、A6、A9。

HTML中的表

代码语言:javascript
复制
<table class="ms-crm-List-Data" cellspacing="0" cellpadding="1" rules="rows" morerecords="0" totalrecordcount="3" allrecordscounted="1" oname="10046" numrecords="3" tabindex="0" primaryfieldname="new_name" summary="foo" border="1" id="gridBodyTable" style="border-style:None;border-collapse:collapse;">
		<colgroup><col width="18px" class="ms-crm-List-CheckBoxColumn"><col width="302" name="new_name" class="ms-crm-List-DataColumn ms-crm-List-SortedColumn"><col width="127" name="createdon" class="ms-crm-List-DataColumn"><col></colgroup><thead><tr class="ms-crm-Hidden-List"><th scope="col" class="ms-crm-Hidden-List"></th><th scope="col" class="ms-crm-Hidden-List">שם</th><th scope="col" class="ms-crm-Hidden-List">created at</th></tr></thead><tbody><tr class="ms-crm-List-Row" oid="{5843AB8E-39F7-E611-BE37-00155D47B163}" otype="10046" otypename="new_contact_content" selected="false">
			<td class="ms-crm-List-NonDataCell" align="center"><input type="checkbox" class="ms-crm-RowCheckBox" id="checkBox_{5843AB8E-39F7-E611-BE37-00155D47B163}" tabindex="0" title="1" style=" "></td><td class="ms-crm-List-DataCell inner-grid-cellPadding"><nobr class="gridcellpadding" title="name1"><a href="#" id="gridBodyTable_primaryField_{5843AB8E-39F7-E611-BE37-00155D47B163}_0" target="_self" title="name 1" class="ms-crm-List-Link" tabindex="0">A1</a></nobr></td><td class="ms-crm-List-DataCell inner-grid-cellPadding ms-crm-NumbersAndDates"><nobr class="gridcellpadding" title="20/02/2017 08:55">20/02/2017 08:55</nobr></td><td class="ms-crm-List-DataCell"><nobr class="gridcellpadding"></nobr></td>
		</tr><tr class="ms-crm-List-Row" oid="{5943AB8E-39F7-E611-BE37-00155D47B163}" otype="10046" otypename="new_contact_content" selected="false">
			<td class="ms-crm-List-NonDataCell" align="center"><input type="checkbox" class="ms-crm-RowCheckBox" id="checkBox_{5943AB8E-39F7-E611-BE37-00155D47B163}" tabindex="0" title="3" style=" "></td><td class="ms-crm-List-DataCell inner-grid-cellPadding"><nobr class="gridcellpadding" title="A5"><a href="#" id="gridBodyTable_primaryField_{5943AB8E-39F7-E611-BE37-00155D47B163}_1" target="_self" title="3" class="ms-crm-List-Link" tabindex="0">3</a></nobr></td><td class="ms-crm-List-DataCell inner-grid-cellPadding ms-crm-NumbersAndDates"><nobr class="gridcellpadding" title="20/02/2017 08:55">20/02/2017 08:55</nobr></td><td class="ms-crm-List-DataCell"><nobr class="gridcellpadding"></nobr></td>
		</tr><tr class="ms-crm-List-Row" oid="{5A43AB8E-39F7-E611-BE37-00155D47B163}" otype="10046" otypename="new_contact_content" selected="false">
			<td class="ms-crm-List-NonDataCell" align="center"><input type="checkbox" class="ms-crm-RowCheckBox" id="checkBox_{5A43AB8E-39F7-E611-BE37-00155D47B163}" tabindex="0" title="9" style=" "></td><td class="ms-crm-List-DataCell inner-grid-cellPadding"><nobr class="gridcellpadding" title="9"><a href="#" id="gridBodyTable_primaryField_{5A43AB8E-39F7-E611-BE37-00155D47B163}_2" target="_self" title="9" class="ms-crm-List-Link" tabindex="0">9</a></nobr></td><td class="ms-crm-List-DataCell inner-grid-cellPadding ms-crm-NumbersAndDates"><nobr class="gridcellpadding">20/02/2017 08:55</nobr></td><td class="ms-crm-List-DataCell"><nobr class="gridcellpadding"></nobr></td>
		</tr></tbody>
	</table>

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-02-23 11:59:23

为第一个元素(A1)尝试以下XPATH:

代码语言:javascript
复制
 var nobrValues = _webdriverIE.FindElement(By.XPath("//tbody/tr[1]/td[2]/nobr/a"));

如果您已经知道文本,即A1 (静态内容)

代码语言:javascript
复制
var nobrValues = _webdriverIE.FindElement(By.XPath("//nobr/a[text()='A1']"));

对于A2

代码语言:javascript
复制
var nobrValues = _webdriverIE.FindElement(By.XPath("//tbody/tr[2]/td[2]/nobr/a"));

如果您已经知道文本,即A2 (静态内容)

代码语言:javascript
复制
var nobrValues = _webdriverIE.FindElement(By.XPath("//nobr/a[text()='A2']"));

请共享table HTML代码,以便我们可以使XPATH更加特定于

票数 0
EN

Stack Overflow用户

发布于 2017-02-23 12:29:02

试试下面的xpath。

获取A1的值

解释:这里您的元素在table中。因此,使用tr标记启动xpath,然后继续使用td标记和nobr标记。使用class属性的nobr标记,并继续使用a标记和text方法。

代码语言:javascript
复制
//tr/td/nobr[@class='gridcellpadding']/a[contains(text(), 'A1')]

获取3的值

代码语言:javascript
复制
//tr/td/nobr[@class='gridcellpadding']/a[contains(text(), '3')]

获取9的值

代码语言:javascript
复制
//tr/td/nobr[@class='gridcellpadding']/a[contains(text(), '9')]
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42414760

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档