python xpath在并行时获得值';s的子值匹配

python xpath在并行时获得值';s的子值匹配,python,xml,xpath,Python,Xml,Xpath,请帮助尝试xpath: //区域安全接口名称[.='2.66']/previous::zones security zonename/text()尝试xpath: //区域安全接口名称[.='2.66']/previous::zones security zonename/text()获取元素: multi-routing-engine-item/zones-information/zones-security[zones-security-interfaces/zones-security-i

请帮助

尝试xpath:

//区域安全接口名称[.='2.66']/previous::zones security zonename/text()

尝试xpath:

//区域安全接口名称[.='2.66']/previous::zones security zonename/text()

获取元素:

multi-routing-engine-item/zones-information/zones-security[zones-security-interfaces/zones-security-interface-name='2.66']/zones-security-zonename
要获取文本,请执行以下操作:

最后添加
/text()

逻辑很简单: 使用
[text()='2.66']
搜索包含
区域安全接口名称的
区域安全
。在找到的区域中-获取
/zones security zonename

以获取元素:

multi-routing-engine-item/zones-information/zones-security[zones-security-interfaces/zones-security-interface-name='2.66']/zones-security-zonename
要获取文本,请执行以下操作:

最后添加
/text()

逻辑很简单:
使用
[text()='2.66']
搜索包含
区域安全接口名称的
区域安全
。在找到的区域中-获取
/zones security zonename

直接使用
父项::*
(实际上是
/../
)是个坏主意,因为万一元素嵌套在另一层中-路径将不起作用。最好使用
previous::zones安全接口
,在这种情况下修复了它。谢谢你的评论!干得好,我会投你的票,尽管它有一个问题。如果在找到的
区域安全
中缺少
区域安全
-路径将查找以前的元素。所以,若你们100%确定元素会在里面,这个路径是可以的。在其他情况下-最好找到需要文本的
区域安全
,并在其中搜索
区域安全区域名称
,以确保找到正确的元素)好的,如您所说,让我们假设
区域安全区域名称
移动到
区域安全
(它必须位于正确的位置?)如果你还想得到这个值,你会怎么做?同时考虑一下:假设你删除了父<代码>区域安全接口< /代码>,你将如何获得这个值?没有要求它不能在
区域安全
内。顺便说一句,你的答案也投了赞成票。问题是:作者是否需要确保文件结构没有改变?如果是-您的答案更好,因为您的路径有一些隐藏的元素关系检查。如果没有-我的答案更好,因为它只是检查,在一些“安全区”内,这两个元素应该以任何顺序/任何级别定位。p、 我通常写的定位器是独立于结构的,因为它们对我来说更容易支持,因为qa自动化工程师直接使用
父项::*
(实际上是
/../
)是个坏主意,因为万一元素嵌套在另一层中,路径就不起作用了。最好使用
previous::zones安全接口
,在这种情况下修复了它。谢谢你的评论!干得好,我会投你的票,尽管它有一个问题。如果在找到的
区域安全
中缺少
区域安全
-路径将查找以前的元素。所以,若你们100%确定元素会在里面,这个路径是可以的。在其他情况下-最好找到需要文本的
区域安全
,并在其中搜索
区域安全区域名称
,以确保找到正确的元素)好的,如您所说,让我们假设
区域安全区域名称
移动到
区域安全
(它必须位于正确的位置?)如果你还想得到这个值,你会怎么做?同时考虑一下:假设你删除了父<代码>区域安全接口< /代码>,你将如何获得这个值?没有要求它不能在
区域安全
内。顺便说一句,你的答案也投了赞成票。问题是:作者是否需要确保文件结构没有改变?如果是-您的答案更好,因为您的路径有一些隐藏的元素关系检查。如果没有-我的答案更好,因为它只是检查,在一些“安全区”内,这两个元素应该以任何顺序/任何级别定位。p、 我通常编写独立于结构的定位器,因为它们对我来说更容易支持,因为qa自动化工程师遵循您的指示,它可以工作:>>>response_zone.xpath(“//zones security[.//zones security interface name[text()='2.66']]/zones security zonename/text()”['HH'].很好)将答案标记为正确(如果有效),或使用正确答案更新您的问题以帮助其他标记的人。但是为什么response_zone.findtext(“多路由引擎项/区域信息/区域安全[.//区域安全接口名称[text()='2.66']]]//zones安全区域名称”)不起作用呢?请按照您的说明操作:>>>response_zone.xpath(//区域安全”)[.//区域安全接口名称[text()='2.66']]/zones-security-zonename/text()”['HH'].great)如果有效,请将答案标记为正确答案),或者使用正确答案更新您的问题以帮助其他人标记。但为什么要响应_-zone.findtext(“多路由引擎项目/区域信息/区域安全[.//区域安全接口名称[text()='2.66']]/区域安全区域名称“)不起作用?
//zones-security[.//zones-security-interface-name[text()='2.66']]/zones-security-zonename