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

Selenium WebDriver-WebElement.FindElements返回比预期更多的元素

阎成天
2023-03-14

因此,我使用PageObjects搜索包含图库的部分。

@FindBy(how = How.XPATH, using = "//section[@id='gallery']")
private WebElement sectionGallery;

然后,我创建了一个小方法,它将返回这个库的所有行

public List<WebElement> getGalleryRows(){
        return sectionGallery.findElements(By.xpath("//div[@class='gallery-horizontal-row']"));
    }

这就是问题所在。我得到的每个Webelement都有xpath表达式“//div[@class='gallery-handeraly-row']”,而不仅仅是“sectiongallery”Webelement下面的webelements。

public List<WebElement> getGalleryRows(){
        return DriverManager.getDriver().findElements(By.xpath("//section[@id='gallery']//div[@class='gallery-horizontal-row']"));
    }
    <section data-section-title="Galerie" id="gallery">
<header>
    <h1>Galerie</h1>
</header>
<div>
    <div >  
        <div class="gallery-horizontal-row" style="height: 220px;">
            <div>
                <article class="gallery-item"></article>
                <article class="gallery-item"></article>
                <article class="gallery-item"></article>
                <article class="gallery-item"></article>
                <article class="gallery-item"></article>
            </div>
        </div>
        <div class="gallery-horizontal-row" style="height: 220px;">
            <div>
                <article class="gallery-item"></article>
                <article class="gallery-item"></article>
                <article class="gallery-item"></article>
            </div>
        </div>
        <div class="gallery-horizontal-row" style="height: 220px;">
            <div>
                <article class="gallery-item"></article>
                <article class="gallery-item"></article>
                <article class="gallery-item"></article>
                <article class="gallery-item"></article>
            </div>
        </div>
    </div>
</div>
</section>
<section id="other">
    ....
</section>  
<section id="other2">
    ....
</section>  
<section id="other3">
    ....
</section>  
<section data-section-title="other4" id="other4">
<header>
    <h1>Other4</h1>
</header>
<div>
    <div >  
        <div class="gallery-horizontal-row" style="height: 220px;">
            <div>
....

共有1个答案

戈正初
2023-03-14

在第二个表达式中的//(descendant-or-self::轴)前面添加.

return sectionGallery.findElements(By.xpath(".//div[@class='gallery-horizontal-row']"));

我是不是误解了这个功能?

不完全是这样,但是以//开头的表达式选择输入文档中任意位置的元素,即使您已经选择了输入的子集作为第二个表达式的起点。尽可能避免//-这是一个被过度使用的轴-尤其是XPath初学者。

 类似资料:
  • 问题内容: 当每个表只有340行时,以下查询将返回> 7000行。 为什么会这样?如果INNER JOIN仅在两个表中都有匹配项时才返回一行,那么为什么要为匹配项返回多行。 问题答案: 如果有一个以上的行具有相同的价值为相同的价值,那么你会得到重复的行,反之亦然。

  • 查看下面的代码,我只期望对的调用发生一次,但测试失败并对其进行了四次调用。这些调用发生在哪里?我想编写一个测试以确保只对进行了一次调用。 来源 输出 详细信息Java1.6, JUnit 4.11, Mockito 1.9.5 如果您将深度存根视为模拟对象树,那么您应该只验证叶子(“链中的最后一个模拟”),因为节点包含在设置叶子行为所需的调用链中。换句话说,节点在叶子的设置过程中被调用。

  • 我正在使用JUnit和Mockito库来测试我的应用程序。问题是,当我在代码下面执行时,值在运行时没有返回空列表,并且测试失败。理想情况下,当get执行时,它应该返回空列表 我热切期待着支持。有没有人能帮我一下,如何通过这个测试用例???。如何通过Mockito使第8行的控件通过测试用例??? 请假设,下面两个类没有真实的代码,我们只有二进制文件作为JAR文件,我们不能修改下面的代码....我附上

  • 在Azure服务总线主题中,我有一个包含1000多条消息的订阅。这些消息由worker角色使用。出于监视目的,我想查看前10条消息,看看哪种消息正在等待处理。为了完成该任务,我创建了一个subscriptionclient,并调用方法PeekBatchAsync。奇怪的行为是,有时PeekBatchAsync返回的消息少于10条(即2条或4条)。 更多信息以澄清上下文: 我确信订阅包含超过1000

  • 我的目标是将一条消息返回到我的网页上,并在那里显示出来,但是返回的值不仅仅是消息,还包含了错误页面的消息和html代码! 下面是 Symfony 捆绑包操作路由和函数定义: 我正在使用以下代码将消息结果返回给ajax调用: 由Ajax调用的服务器端PHP代码... 调用上述代码并接收响应的客户端JavaScript代码: 当断点设置在< code >时返回新的响应($ message);和< co

  • 问题内容: 我在接收几个参数的过程中使用一个简单的游标。然后,我在带有带多个条件的where子句的select查询上做一个游标,这些条件等于接收到的参数。该游标应该只返回1行,而是返回多行。我发现这是因为我使用了一个for循环来遍历此游标,然后根据该游标的值将内容插入到另一个表中。 当我在数据库上静态运行查询时(如不使用pl / sql一样),可以得到期望的结果,但是当我从游标执行查询时,该游标应