这篇文章主要围绕如何使用Selenium通过索引在Xpath节点集中选择指定的节点?展开,旨在为您提供一份详细的参考资料。我们将全面介绍如何使用Selenium通过索引在Xpath节点集中选择指定的节
这篇文章主要围绕如何使用Selenium通过索引在Xpath节点集中选择指定的节点?展开,旨在为您提供一份详细的参考资料。我们将全面介绍如何使用Selenium通过索引在Xpath节点集中选择指定的节点?,同时也会为您带来c# – 使用XPath从Atom XML文档中选择无节点?、php – Xpath选择没有子节点的节点、php – 如何使用单个DOMXpath表达式选择DOMDocument的所有节点?、python+selenium+xpath 节点获取问题的实用方法。
本文目录一览:- 如何使用Selenium通过索引在Xpath节点集中选择指定的节点?
- c# – 使用XPath从Atom XML文档中选择无节点?
- php – Xpath选择没有子节点的节点
- php – 如何使用单个DOMXpath表达式选择DOMDocument的所有节点?
- python+selenium+xpath 节点获取问题
如何使用Selenium通过索引在Xpath节点集中选择指定的节点?
我正在写一个selenium测试用例。这是我用来匹配数据表中所有“修改”按钮的xpath表达式。
//img[@title=''Modify'']
我的问题是,如何按索引访问匹配的节点集?我尝试过
//img[@title=''Modify''][i]
和
//img[@title=''Modify'' and position() = i]
但是两者都没有。.我也尝试了XPath checker(一个firefox扩展名)。总共找到13个匹配项,那么我完全不知道如何选择其中之一。
或者XPath是否支持指定选择的不在同一父节点下的节点?
答案1
小编典典这是一个常见问题解答 :
//someName[3]
意思是 :someName
文档中的所有元素,它们是someName
其父元素的第三 个子元素-可能有很多这样的元素。
您想要的正是第三个someName
元素:
(//someName)[3]
说明
:的[]
优先级(优先级)高于//
。请记住,在//someName
需要指定所选节点列表的第N个节点时,始终将类型的表达式放在方括号中。
c# – 使用XPath从Atom XML文档中选择无节点?
我一直在使用这个Atom提要作为测试:http://steve-yegge.blogspot.com/feeds/posts/default
调用SelectSingleNode()始终返回null,除非我使用“/”.这是我现在正在尝试的:
using (WebClient wc = new WebClient()) { string xml = wc.DownloadString("http://steve-yegge.blogspot.com/Feeds/posts/default"); XmlNamespaceManager nsMngr = new XmlNamespaceManager(new NaMetable()); nsMngr.AddNamespace(string.Empty,"http://www.w3.org/2005/Atom"); nsMngr.AddNamespace("app","http://purl.org/atom/app#"); XmlDocument atom = new XmlDocument(); atom.LoadXml(xml); XmlNode node = atom.SelectSingleNode("//entry/link/app:edited",nsMngr); }
我以为它可能是因为我的XPath,所以我也尝试了一个简单的根节点查询,因为我知道root应该工作:
// I've tried both with & without the nsMngr declared above XmlNode node = atom.SelectSingleNode("/Feed");
无论我做什么,似乎都无法选择任何东西.显然我错过了一些东西,我只是无法弄清楚是什么.为了使XPath能够在这个Atom提要上工作,我需要做些什么?
编辑
Although this question has an answer,I found out this question has an almost exact duplicate: 07001
解决方法
nsMngr.AddNamespace("atom","http://www.w3.org/2005/Atom");
并适当地改变你的XPath:
XmlNode node = atom.SelectSingleNode("//atom:entry/atom:link/app:edited",nsMngr);
php – Xpath选择没有子节点的节点
HTML代码:
<div> <h2>Notre histoire</h2> <p>SPECIFICS WORDS<strong>1998 : la création</strong></p> <p>pour objectif « de promouvoir,selon une démarche d’éducation active,auprès des jeunes et à travers eux,des projets d’expression collective et d’action de solidarité » (article 2).<br><br><strong>1999-2001 : les débuts SPECIFICS WORDS</strong></p> <p>SPECIFICS WORDS<a href="#">SPECIFICS WORDS</a></p> </div>
所以我的目标是prepec_replace在SPECIFIC WORDS上,但只有那些在P中,但是从A或STRONG或任何一个标签出来的人.
我不能使用任何类,或任何id,因为我以前不知道代码!
我尝试了preg_replace PHP函数,但它没有用,而且执行时间太长.
所以我的问题是:
如何用XPATh选择没有A,STRONG,IMG chidrens的节点?
解决方法
//p/text()[contains(.,'SPECIFIC')]
这将排除其他元素内的文本节点,例如在强者或.
要替换它们,你可以
$dom = new DOMDocument; $dom->loadHTML($html); $xpath = new DOMXPath($dom); foreach ($xpath->query('//p/text()[contains(.,"SPECIFIC")]') as $textNode) { $textNode->nodeValue = "REPLACED"; } echo $dom->saveHTML();
另见DOMDocument in php和XPath Tutorial
php – 如何使用单个DOMXpath表达式选择DOMDocument的所有节点?
选择文档的所有节点的xpath表达式是什么?
给出这个例子XML:
<div/>
我包含三个节点:< div> (元素),类=(属性)和“标题”(文本).
$doc = new DOMDocument;
$doc->loadXml('<div/>');
$xpath = new DOMXPath($doc);
我尝试使用// node():
$xpath->query('//node()');
它只返回所有元素节点(我假设因为//).有没有办法在属性值中添加属性和文本节点等其他节点?
附加示例:
我可以使用DOMDocument API获取每个节点,例如获取属性值的文本节点:
$doc = new DOMDocument;
$doc->loadXml('<div/>');
$class = $doc->documentElement->getAttributeNode('class');
echo $class->childNodes->item(0)->nodeName;
这使:
#text
如何获取具有一个xpath表达式的所有节点的超集,尤其是包括该示例性类属性 – 节点子文本节点?
解决方法:
使用:
//node() | //@* | //namespace::*
这将选择任何节点(类型为文档节点/,元素节点,文本节点,处理指令节点和注释节点)以及任何属性节点和任何命名空间节点 – 即所有节点,因为没有其他类型的节点.
如何访问包含所选节点的获取的XmlNodeList取决于您使用的特定XPath引擎的API – 阅读并使用您的文档.
基于XSLT的示例:
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration="yes" indent="yes"/>
<xsl:strip-space elements="*"/>
<xsl:template match="/">
<xsl:for-each select=
"//node() | //@* | //namespace::*">
Type: <xsl:text/>
<xsl:choose>
<xsl:when test="not(..)">
<xsl:text>document node </xsl:text>
</xsl:when>
<xsl:when test="self::*">
<xsl:text>element </xsl:text>
</xsl:when>
<xsl:when test="self::text()">
<xsl:text>text-node </xsl:text>
</xsl:when>
<xsl:when test="self::comment()">
<xsl:text>comment-node </xsl:text>
</xsl:when>
<xsl:when test="self::processing-instruction()">
<xsl:text>PI-node </xsl:text>
</xsl:when>
<xsl:when test="count(.|../@*) = count(../@*)">
<xsl:text>attribute-node </xsl:text>
</xsl:when>
<xsl:when test=
"count(.|../namespace::*) = count(../namespace::*)">
<xsl:text>namespace-node </xsl:text>
</xsl:when>
</xsl:choose>
<xsl:text>Name: "</xsl:text>
<xsl:value-of select="name()"/>" <xsl:text/>
<xsl:text>Value: </xsl:text>
<xsl:value-of select="."/>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
当这个XSLT转换应用于任何XML文档时,它使用上面的XPath表达式选择所有节点(转换故意排除任何只有空格的文本节点)并输出(按文档顺序)类型,名称和字符串值选定的节点.
例如,在应用于此XML文档时:
<networkOfBridges xmlns:x="x">
<bridge id="1" otherside="A" />
<!-- A Comment -->
<bridge id="2" oneside="A"/>
<?PI Processing Instruction ?>
<bridge id="3" oneside="A" otherside="A" />
</networkOfBridges>
结果是:
Type: element Name: "networkOfBridges" Value:
Type: namespace-node Name: "xml" Value: http://www.w3.org/XML/1998/namespace
Type: namespace-node Name: "x" Value: x
Type: element Name: "bridge" Value:
Type: namespace-node Name: "xml" Value: http://www.w3.org/XML/1998/namespace
Type: namespace-node Name: "x" Value: x
Type: attribute-node Name: "id" Value: 1
Type: attribute-node Name: "otherside" Value: A
Type: comment-node Name: "" Value: A Comment
Type: element Name: "bridge" Value:
Type: namespace-node Name: "xml" Value: http://www.w3.org/XML/1998/namespace
Type: namespace-node Name: "x" Value: x
Type: attribute-node Name: "id" Value: 2
Type: attribute-node Name: "oneside" Value: A
Type: PI-node Name: "PI" Value: Processing Instruction
Type: element Name: "bridge" Value:
Type: namespace-node Name: "xml" Value: http://www.w3.org/XML/1998/namespace
Type: namespace-node Name: "x" Value: x
Type: attribute-node Name: "id" Value: 3
Type: attribute-node Name: "oneside" Value: A
Type: attribute-node Name: "otherside" Value: A
python+selenium+xpath 节点获取问题
selenium 如果根据已获得的当前节点来获取父节点、兄弟节点,用 python 代码实现
如:现已获得 id="B" 的节点,如何在此基础上直接获取的 id=“A” 的节点(不用 xpath 去定位)
我们今天的关于如何使用Selenium通过索引在Xpath节点集中选择指定的节点?的分享就到这里,谢谢您的阅读,如果想了解更多关于c# – 使用XPath从Atom XML文档中选择无节点?、php – Xpath选择没有子节点的节点、php – 如何使用单个DOMXpath表达式选择DOMDocument的所有节点?、python+selenium+xpath 节点获取问题的相关信息,可以在本站进行搜索。
本文标签: