使用c#和XPath在完全动态的网页中从已知起点查找节点?

时间:2016-02-08 16:26:06

标签: c# xpath

我正在尝试为内部网站编写自动烟雾测试。问题是网站几乎主要是动态生成的。因此任何类型的唯一标识符(如ID)都是已知字符串前缀的组合,并以一个radomized数字结束。

我也不能依赖顺序,所以使用div [2]或span [25]这样的东西是不可靠的,除非有一些方法可以根据我在哪里获取span / div /输入的数量我目前通过KNOWN TEXT VALUE位于DOM中。

例如,我可以找到已知的文本值。如果我能以某种方式以编程方式确定此已知文本值的范围是55,并且我知道它与我正在寻找的其他元素嵌套2深,那么我可以执行类似" // span [55 - 2] /输入"。

我能做的最好的事情是将DOM导航到某个已知的文本值,然后从那里开始或向下工作。

鉴于这一点,在下面的例子中,当从KNOWN TEXT VALUE开始时,我将如何导航到INPUT元素?



<span id="RandomlyGenerated35673">
	<span id="RandomlyGeneratedNum58532">
		<span id="RandomlyGenerated78539">
			<span/>
			<span/>
			<span id="RandomlyGenerated78539">KNOWN TEXT VALUE</span>
		</span>
	</span>
	<input class="GENERIC-NON-UNIQUE" type="button" value="GENERIC-NON-UNIQUE"/>
</span>
&#13;
&#13;
&#13;

1 个答案:

答案 0 :(得分:1)

您可以使用following axis

//span[. = 'KNOWN TEXT VALUE']/following::input[@type = 'button']