2013-05-13 61 views
0

我正在使用fluentlenium对我的应用程序进行测试,但发生了一些错误。我正在使用Play Framework和Slickgrid创建我的网格。 Slickgrid在javascript中动态创建网格。 所创建的结构似乎是这样的:使用fluentlenium与动态生成内容的问题

<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模拟点击或获取单元格的值。

回答

1

你有comportement你有写:

  • 转到页
  • 打印立刻

什么happend有来源:尚未产生Slickgrid东西。如果你想这样,你必须等待。

所以使用的await API的东西,如在转到(页)之间:

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

或任何你认为比较合适的。在那里它会最多等待5秒钟,直到找到具有类浮动行的元素。