当前位置: 首页 > 知识库问答 >
问题:

XPath-前一个同级包含一个元素检查

白飞飙
2023-03-14

我有以下从一个网页简化的HTML...

<div class="row import-entity">
    <div class="col-md-11">
        <div class="row">
            <div class="col-md-3">
                <span class="mandatory"></span>
            </div>
            <div class="col-md-3">
                <input id="ImportTemplateEntities_2918.Header" type="hidden"></input>
                <input id="ImportTemplateEntities_5923.Header"></input>
            </div>
            <div class="col-md-3">
                <input id="ImportTemplateEntities_1234.Column"></input>
            </div>
            <div class="col-md-3"></div>
        </div>
        <div class="row">
            <div class="col-md-3"></div>
            <div class="col-md-3">
                <input id="ImportTemplateEntities_9182.Header" type="hidden"></input>
                <input id="ImportTemplateEntities_2834.Header"></input>
            </div>
            <div class="col-md-3">
                <input id="ImportTemplateEntities_1243.Column"></input>
            </div>
            <div class="col-md-3"></div>
        </div>
    </div>
</div>

需要以下XPath选择条件...

  • col-md-3 div内的输入标记,该标记紧接在包含class=manditional的span的col-md-3 div之后
  • 输入标记不应隐藏

上面HTML中的以下元素与搜索条件匹配

<input id="ImportTemplateEntities_5923.Header"></input>

(请注意,ID中的数值是动态分配的,在搜索文档时我不会知道。)

在添加任何前一种兄弟检查之前,这是我的....

//input[contains(@id,'ImportTemplateEntities')][contains(@id,'Header')][not(contains(@type,'hidden'))]

共有1个答案

袁霍英
2023-03-14

这个XPath,

//input[contains(@id,'ImportTemplateEntities')]
       [contains(@id,'Header')]
       [not(@type='hidden')]
       [../preceding-sibling::div[span/@class='mandatory']]

将根据请求选择所有input元素,这些元素id属性值包含注意的子字符串,并且没有type属性,该属性的值为hiddit并且其父元素具有一个前同级div元素和一个子span元素,该子元素具有一个class属性,该属性的值为mandity

 类似资料:
  • 我正在为以下代码编写selenium脚本。 这些是如下所示的复选框。复选框的数量将根据数据库值进行更改。 在我的代码中,我首先检查是否选中了“Frau”复选框。所以我试着按照这个片段。 但是当我试图执行这个脚本时<代码>WebElement div=父级。findElement(By.xpath(“前面的同级:::div”)给我第一个div标记,而不是前一个。我想要一个兄弟姐妹。

  • 问题内容: 如何检查一个DOM元素是否是另一个DOM元素的子元素?有内置的方法吗?例如,类似: 要么 如果没有,那么有什么想法怎么做?它还需要跨浏览器。我还应该提到,孩子可以嵌套在父级以下的多个级别。 问题答案: 更新: 现在有一种本地方法可以实现此目的。。在评论中也提到了答案。 旧答案: 使用该属性应该可以。从跨浏览器的角度来看,它也是非常安全的。如果已知这种关系是一级的,则可以简单地检查一下:

  • 我在JavaSelenium中运行测试,在那里我找到一个元素,一旦找到就需要找到紧接在前的元素。代码需要是动态的,因为我不知道我开始的元素是5个中的第3个、10个中的第6个还是2个中的第1个。 问题是,使用xpath中的前置兄弟,我得到了找到的元素之前的所有元素,而不是紧接在它之前的元素。例如,这是我的xml: 假设我已经找到了作为WebElement的“Value 2”标签,那么我接下来要做的就

  • 问题内容: 我有两个带有不同对象的列表。 我想检查list2中的元素是否存在于list2中,基于特定的属性(Object1和Object2具有(以及其他),一个共有属性(类型为Long),名为attributeSame)。 现在,我这样做是这样的: 但是我认为有一种更好,更快的方法可以做到这一点:)有人可以提出吗? 谢谢! 问题答案: 如果只需要测试基本相等性,则可以使用基本JDK来完成,而无需在

  • 我有两个不同对象的列表。 我想根据特定的属性(Object1和Object2有一个共同的属性(类型为Long),名为AttributeName),检查list2中是否存在list1中的元素。 现在,我是这样做的: 但我认为有更好更快的方法可以做到这一点:)有人能提出吗? 谢谢

  • 我的XSLT1.0模板中有两个变量,每个变量包含一个节点集(用xpath选择)。我想确定一个变量中的节点集是否包含在另一个变量中的节点集中。例如,假设我有一个包含嵌套部分的章节。我想看看是否包含在中: 我试图获取节点集的交集,以查看是否是和共享的第一个公共元素,但这不起作用: 添加一些上下文。我正在用这个xslt为html页面树创建一个选项卡式界面,我试图解决的问题是将class=“current