Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xml XPATH选择两个特定元素之间的所有元素_Xml_Xpath - Fatal编程技术网

Xml XPATH选择两个特定元素之间的所有元素

Xml XPATH选择两个特定元素之间的所有元素,xml,xpath,Xml,Xpath,我正试图在一些自动化的Appium和Python2.7测试中大量利用XPATH,并且正在努力使用更复杂的XPATH轴从XML页面源代码中选择特定的元素组 下面是我一直在使用的XPath测试仪/验证器: 我拥有的是一个动态UIATable,它将有一个或多个UIATableGroup,出现的每个UIATableGroup都肯定会有一个或多个UIATableCell 我需要做的是能够选择特定UIATableGroup中的所有UIATableCell。更复杂的是,在我希望瞄准的特定UIATableGro

我正试图在一些自动化的Appium和Python2.7测试中大量利用XPATH,并且正在努力使用更复杂的XPATH轴从XML页面源代码中选择特定的元素组

下面是我一直在使用的XPath测试仪/验证器:

我拥有的是一个动态UIATable,它将有一个或多个UIATableGroup,出现的每个UIATableGroup都肯定会有一个或多个UIATableCell

我需要做的是能够选择特定UIATableGroup中的所有UIATableCell。更复杂的是,在我希望瞄准的特定UIATableGroup之后,可能有也可能没有另一个UIATableGroup

下面是一个示例XML页面源代码,我在每个组中使用一个UIATableCell对其进行了简化:

        <UIATableView name="" label="" value="rows 1 to 5 of 5" dom="" enabled="true" valid="true" visible="true" hint="" path="/0/1/1" x="0" y="75.6875" width="375" height="590.625">
            <UIATableGroup name="Cases" label="" value="" dom="" enabled="true" valid="true" visible="true" hint="" path="/0/1/1/0" x="0" y="75.6875" width="375" height="25.78125">
                <UIAStaticText name="Cases" label="Cases" value="Cases" dom="" enabled="true" valid="true" visible="true" hint="" path="/0/1/1/0/0" x="0" y="75.6875" width="375" height="25.78125">
                </UIAStaticText>
            </UIATableGroup>
            <UIATableCell name="Case1" label="" value="" dom="" enabled="true" valid="true" visible="true" hint="" path="/0/1/1/1" x="0" y="101.46875" width="375" height="90.234375">
                <UIAStaticText name="CaseName1" label="CaseName1" value="CaseName1" dom="" enabled="true" valid="true" visible="true" hint="" path="/0/1/1/1/0" x="15.234375" y="108.5" width="309.375" height="18.159378051757812">
                </UIAStaticText>
                <UIAStaticText name="CaseSeverity1" label="CaseSeverity1" value="CaseSeverity1" dom="" enabled="true" valid="true" visible="true" hint="" path="/0/1/1/1/1" x="15.234375" y="129.0031280517578" width="62.240623474121094" height="16.3828067779541">
                </UIAStaticText>
                <UIAStaticText name="CaseStatus1" label="CaseStatus1" value="CaseStatus1" dom="" enabled="true" valid="true" visible="true" hint="" path="/0/1/1/1/2" x="15.234375" y="148.109375" width="309.375" height="17.748043060302734">
                </UIAStaticText>
                <UIAStaticText name="CaseName1" label="CaseName1" value="CaseName1" dom="" enabled="true" valid="true" visible="true" hint="" path="/0/1/1/1/3" x="97.3968734741211" y="129.0031280517578" width="70.3687515258789" height="16.762500762939453">
                </UIAStaticText>
            </UIATableCell>
            <UIATableGroup name="Bugs" label="" value="" dom="" enabled="true" valid="true" visible="true" hint="" path="/0/1/1/2" x="0" y="191.703125" width="375" height="25.78125">
                <UIAStaticText name="Bugs" label="Bugs" value="Bugs" dom="" enabled="true" valid="true" visible="true" hint="" path="/0/1/1/2/0" x="0" y="191.703125" width="375" height="25.78125">
                </UIAStaticText>
            </UIATableGroup>
            <UIATableCell name="Bug1" label="" value="" dom="" enabled="true" valid="true" visible="true" hint="" path="/0/1/1/3" x="0" y="217.484375" width="375" height="93.75">
                <UIAStaticText name="Bug1" label="Bug1" value="Bug1" dom="" enabled="true" valid="true" visible="true" hint="" path="/0/1/1/3/0" x="15.234375" y="222.171875" width="86.07421875" height="17.7480525970459">
                </UIAStaticText>
                <UIAStaticText name="Bug1 Description" label="Bug1 Description" value="Bug1 Description" dom="" enabled="true" valid="true" visible="true" hint="" path="/0/1/1/3/1" x="15.234375" y="242.263671875" width="307.2620849609375" height="18.159378051757812">
                </UIAStaticText>
                <UIAStaticText name="BugDate1" label="BugDate1" value="BugDate1" dom="" enabled="true" valid="true" visible="true" hint="" path="/0/1/1/3/2" x="15.234375" y="262.7668151855469" width="219.89291381835938" height="17.7480525970459">
                </UIAStaticText>
                <UIAStaticText name="BugSeverity1" label="BugSeverity1" value="BugSeverity1" dom="" enabled="true" valid="true" visible="true" hint="" path="/0/1/1/3/3" x="132.421875" y="222.171875" width="175.78125" height="17.7480525970459">
                </UIAStaticText>
            </UIATableCell>
            <UIATableGroup name="Videos" label="" value="" dom="" enabled="true" valid="true" visible="true" hint="" path="/0/1/1/4" x="0" y="311.234375" width="375" height="25.78125">
                <UIAStaticText name="Videos" label="Videos" value="Videos" dom="" enabled="true" valid="true" visible="true" hint="" path="/0/1/1/4/0" x="0" y="311.234375" width="375" height="25.78125">
                </UIAStaticText>
            </UIATableGroup>
            <UIATableCell name="Videos1" label="" value="" dom="" enabled="true" valid="true" visible="true" hint="" path="/0/1/1/5" x="0" y="337.015625" width="375" height="51.5625">
                <UIAStaticText name="Videos1" label="Videos1" value="Videos1" dom="" enabled="true" valid="true" visible="true" hint="" path="/0/1/1/5/0" x="35.15625" y="337.015625" width="222.064453125" height="50.390625">
                </UIAStaticText>
            </UIATableCell>
            <UIATableGroup name="Feeds" label="" value="" dom="" enabled="true" valid="true" visible="true" hint="" path="/0/1/1/6" x="0" y="388.578125" width="375" height="25.78125">
                <UIAStaticText name="Feeds" label="Feeds" value="Feeds" dom="" enabled="true" valid="true" visible="true" hint="" path="/0/1/1/6/0" x="0" y="388.578125" width="375" height="25.78125">
                </UIAStaticText>
            </UIATableGroup>
            <UIATableCell name="Feeds1" label="" value="" dom="" enabled="true" valid="true" visible="true" hint="" path="/0/1/1/7" x="0" y="414.359375" width="375" height="51.5625">
                <UIAStaticText name="Feeds1" label="Feeds1" value="Feeds1" dom="" enabled="true" valid="true" visible="true" hint="" path="/0/1/1/7/0" x="35.15625" y="414.359375" width="114.59180450439453" height="50.390625">
                </UIAStaticText>
            </UIATableCell>
            <UIATableGroup name="Podcasts" label="" value="" dom="" enabled="true" valid="true" visible="true" hint="" path="/0/1/1/8" x="0" y="465.921875" width="375" height="25.78125">
                <UIAStaticText name="Podcasts" label="Podcasts" value="Podcasts" dom="" enabled="true" valid="true" visible="true" hint="" path="/0/1/1/8/0" x="0" y="465.921875" width="375" height="25.78125">
                </UIAStaticText>
            </UIATableGroup>
            <UIATableCell name="Podcast1" label="" value="" dom="" enabled="true" valid="true" visible="true" hint="" path="/0/1/1/9" x="0" y="491.703125" width="375" height="51.5625">
                <UIAStaticText name="Podcast1" label="Podcast1" value="Podcast1" dom="" enabled="true" valid="true" visible="true" hint="" path="/0/1/1/9/0" x="35.156246185302734" y="491.703125" width="106.76951599121094" height="50.390625">
                </UIAStaticText>
            </UIATableCell>
        </UIATableView>

我已使用以下方法成功捕获特定UIATableGroup(如“Bugs”)之后的所有UIATableCell:

//UIATableGroup[@name='Bugs']/以下同级::UIATableCell

但是,除了我的目标UIATableGroup之外,它还会在以下UIATableGroup中获取UIATableCell

我无法做的是过滤掉其他UIATableGroup的所有单元格。我的想法是,用UIATableGroup[@name='Bugs']后面的UIATableGroup将其绑定是最容易的,而这正是我遇到的问题,无法设计正确的XPATH来实现这一点

如果我能设计一条XPATH语句,解释在我的目标UIATableGroup之后可能不会显示任何其他UIATableGroup的场景,那就太好了,但不是必需的。例如,在示例XML中选择“播客”UIATableGroup


好时光。:)

我会反过来考虑-您需要所有
UIATableCell
元素,其最近的前一个
UIATableGroup
具有特定名称,例如

//UIATableCell[preceding-sibling::UIATableGroup[1]/@name = 'Bugs']

对不起,这有点难理解。你能说得更清楚一点吗:你得到了什么?你想得到什么?当我指定UIATableGroup[@name=“bugs”]时,我希望能够得到“Bug1”(以及该特定组中的任何其他bug),但从其他组中排除所有其他单元格。或者“Case1”(以及该特定组中的任何其他案例),如果我指定UIATableGroup[@name=“cases”],那就足够简单了。似乎对我所有的UIATableGroup都很有效,无论目标组之前或之后是否有UIATableGroup。答对 了