2013-05-13 76 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秒鐘,直到找到具有類浮動行的元素。