我在我的应用程序中使用fluent进行测试,但是发生了一些错误。我正在使用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来模拟点击或获取单元格值。
答案 0 :(得分:1)
你得到了你所写的内容:
那里发生了什么:尚未生成Slickgrid的东西。如果你愿意,你必须等待。
所以在goTo(page)和:
之间使用await apiawait().atMost(5, TimeUnit.SECONDS).until(".slick-row").isPresent()
或您认为更合适的任何事情。在那里它将等待最多5秒,直到找到具有类光滑行的元素。