【问题标题】:Problems using fluentlenium with dynamic generated content使用具有动态生成内容的 fluentlenium 时出现问题
【发布时间】:2013-05-13 14:05:29
【问题描述】:

我正在使用 fluentlenium 对我的应用程序进行测试,但发生了一些错误。我正在使用 Play Framework 和 Slickgrid 来创建我的网格。 Slickgrid 在 javascript 中动态创建网格。 创建的结构如下所示:

<div id=”grid”>
<div class=”header”>
    <div class=”slickgrid-column-header column-1”>Column 1 </div>
    <div class=”slickgrid-column-header column-2”>Column 2 </div>
    <div class=”slickgrid-column-header column-2”>Column 2 </div>
</div>
<div class=”viewport”>
    <div class=”canvas”>
        <div class=”slick-row row-1”>
            <div class=”slick-cell l0 r0> Column 1 Row 1</div>
            <div class=”slick-cell l1 r1> Column 2 Row 1</div>
            <div class=”slick-cell l2 r2> Column 3 Row 1</div>
        </div>
        <div class=”slick-row row-2”>
            <div class=”slick-cell l0 r0> Column 1 Row 2</div>
            <div class=”slick-cell l1 r1> Column 2 Row 2</div>
            <div class=”slick-cell l2 r2> Column 3 Row 2</div>
        </div>
    </div>
</div>
</div>

通常,当您使用 fluentlenium 查看源代码时,您可以看到所有源代码,但在我的情况下,缺少一些 slickgrid 代码行。而这些缺失的行是我需要的行。 此代码创建了一个获取页面源的简单测试。

@Test
   public final void fakeTest() {
         final int port = 3333;
     running(testServer(port, fakeApplication()), HTMLUNIT, 
         new Callback<TestBrowser>() {
          @Override
         public void invoke(final TestBrowser browser) throws Throwable {
                browser.goTo("http://localhost:3333/fake");
                    System.out.println(browser.pageSource());
         }
          });
   }

输出看起来像这样:

<html>
<head> <title> </title> </head>
<body>
    <div id=”grid>
        <div class=”header”>
            <div class=”slickgrid-column-header column-1”>Column 1 </div>
            <div class=”slickgrid-column-header column-2”>Column 2 </div>
            <div class=”slickgrid-column-header column-2”>Column 2 </div>
            </div>
                <div class=”viewport”>
            <div class=”canvas”></div>
            </div>
    </div>
</body>
</html>

你怎么看,单元格没有出现,我无法获取单元格 FluentWebElement 来模拟点击或获取单元格值。

【问题讨论】:

    标签: javascript testing selenium playframework slickgrid


    【解决方案1】:

    你有你写的行为:

    • 转到页面
    • 立即打印源代码

    那里发生了什么:Slickgrid 的东西还没有生成。如果你想这样,你必须等待。

    所以在 goTo(page) 和 : 之间使用 await api

    await().atMost(5, TimeUnit.SECONDS).until(".slick-row").isPresent()
    

    或任何你认为更合适的东西。在那里它最多会等待 5 秒,直到找到具有类 slick-row 的元素。

    【讨论】:

      猜你喜欢
      • 2020-03-12
      • 1970-01-01
      • 2021-08-21
      • 1970-01-01
      • 2014-05-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多