XPath 如何自动快速获取元素

XPath 如何自动快速获取元素,第1张

1 利用Selenium IDE

我们可以通过firefox添加插件Selenium IDE并开启。当点击红色的录制按钮后,我们对网页进行 *** 作后,该工具会录制所有的行为并转化为selenium命令,当然也就包含有了locator。

方法优点:简单、方便

方法不足:对于一些复杂点的行为可能会漏掉,因此也就无法捕获相应的locator;此外locator是自动获取的,可能不是很直观,另外无法得到统一样式的locator。

2 利用Firebug

同样firefox的插件中可以添加firebug。在Tools->Web Developer->Firebug中打开Firebug,于是能够看到页面的下半部分有显示Firebug窗口,可以查看HTML,CSS等。因为了解的粗浅,所以只能说说知道的几点简单功能。

如果我们需要查看页面某个元素的locator,可以鼠标右击,选择Inspect Element with Firebug, 于是就到了元素对应的html源码位置。这样我们根据这部分源码来写locator。

但是,往往对于一些element如button等,右击后没有反应时,我们可以考虑选择它们旁边的元素进行,到源码后再通过查找其兄弟元素源码或者上一层来找到相应源码。这里主要根据是当我们鼠标放在以某tag为根节点的源码的上时,上面的页面对应的界面元素会有相应标记。

方法缺点:写出的locator可能并不是页面的唯一,这样selenium运行就难以识别

用XPath表达式来定位到对应的<td>元素:

//th[span[text()="发布时间"]]/following-sibling::td/span

这个XPath表达式首先选择包含文本“发布时间”的<span>元素的<th>元素,然后使用/following-sibling::td选择这个<th>元素的下一个兄弟元素,即包含发布时间的<td>元素。最后,使用/span选择包含发布时间值的<span>元素。

请注意,这个XPath表达式返回的是一个<span>元素,如果您只需要获取该元素的文本值,可以使用text()函数,例如:

//th[span[text()="发布时间"]]/following-sibling::td/span/text()

这将返回包含发布时间的<span>元素的文本值

很简单,教你一招:

这是你的html文件,我命名为testhtml

然后用xpath匹配:

import lxmletree

html=lxmletreeparse("testhtml")

res=htmlxpath("//a[@heaf='baiducom']")

info=res[0]xpath('string()')

print(info)

运行结果:

大概是这样的吧 可以试试

jquery有个 parents()

比如选了一个div id为test,想整xpath的话 $("#test")parents();这样获取的是一个数组,

var aa = [];

$('#test')parents()each(function(){

aapush(thistagName);

});

获取标签名后 就可以替换成xpath了 不过需要注意的是 这个不止获取到body 最后一个元素应该是到html,也不太确定,反正在firefox上是这样的

selxpath() 得到的依旧是一个SelectorList

参看原文档

xpath(query)

Find nodes matching the xpath query and return the result as a SelectorList instance with all elements flattened List elements implement Selector interface too

query is a string containing the XPATH query to apply

那么实际上就是去看Selector 相关的函数了。

————————————————

<p>

AA

<sub>1</sub>

<sub>2</sub>

<sub>3</sub>

</p>

<p>

BB

<sub>1</sub>

<sub>2</sub>

<sub>3</sub>

</p>

对于上述例子,其实可以考虑获取到p之后,对其内容再进行一次查找,即可获得 1 、2 、3的内容。

实现方法如下:

加载到XmlDocument,查找p子节点(XPath),如果要在子节点内继续查找,用递归;

string patten_block="<div class=\"wm_sktq_l\">[\\s\\S]</div>"

string patten_p="<p>[\\s\\S]</p>" 用组获取。

以上就是关于XPath 如何自动快速获取元素全部的内容,包括:XPath 如何自动快速获取元素、XPATH文本内容匹配th内容,获取td的值、xpath取一个节点下的所有文字等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/9777072.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-01
下一篇2023-05-01

发表评论

登录后才能评论

评论列表(0条)

    保存