Javascript 使用具有动态生成内容的fluentlenium时出现的问题

Javascript 使用具有动态生成内容的fluentlenium时出现的问题,javascript,testing,selenium,playframework,slickgrid,Javascript,Testing,Selenium,Playframework,Slickgrid,我正在用fluentlenium对我的应用程序进行测试,但出现了一些错误。我正在使用Play Framework和Slickgrid创建我的网格。Slickgrid在javascript中动态创建网格。 创建的结构如下所示: <div id=”grid”> <div class=”header”> <div class=”slickgrid-column-header column-1”>Column 1 </div> <di

我正在用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>
<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>

第1栏
第2栏
第2栏
第1列第1行
第2列第1行
第3列第1行
第1列第2行
第2列第2行
第3列第2行
通常,当您使用fluentlenium查看源代码时,您可以看到所有源代码,但在我的例子中,缺少一些光滑的网格代码行。这是我需要的。 这段代码创建了一个获取页面源代码的简单测试

@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());
         }
          });
   }
@测试
公开最终无效fakeTest(){
最终int端口=3333;
正在运行(testServer(端口,fakeApplication()),HTMLUNIT,
新回调函数(){
@凌驾
public void invoke(最终测试浏览器浏览器)抛出Throwable{
browser.goTo(“http://localhost:3333/fake");
System.out.println(browser.pageSource());
}
});
}
输出如下所示:

<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>
<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>

第1栏
第2栏
第2栏

您可以看到,单元格没有出现,我无法让cell FluentWebElement模拟单击或获取单元格值。

您有编写的组件:

  • 转到第页
  • 立即打印源文件
发生了什么:Slickgrid的东西还没有生成。如果你想这样,你必须等待

因此,在goTo(第页)和以下内容之间使用wait api:

或者任何你认为更合适的。在那里,它将最多等待5秒钟,直到找到具有类slick行的元素