找出jqGrid是否已加载并准备好使用Selenium的最佳方法

Zas*_*asz 4 selenium jqgrid

如何通过selenium找出jqGrid是否已加载并准备好使用.

一些细节:

  • 我正在使用C#驱动程序
  • 我有一个方法:new WebDriverWait(driver, new TimeSpan(0, 0, 0, 30)).Until(x => loadingdissapearedcondition)我使用等待,直到Loading ..元素消失.
  • 我有时也使用这个脚本:

private const string script = @"return ($('#{0}').jqGrid('getGridParam', 'reccount') !=x undefined) && ($('#{0}').jqGrid('getGridParam', 'reccount') != 0) && (!$('#load_{0}').is(':visible')) && (!$('#busyIcon').is(':visible'))";

private readonly string waitScript;

waitScript = string.Format(script, jqGridId);

public void WaitUntilLoadIconDissappears()
{
    driver.WaitUntil(MAXWAIT, Wait);
}

public bool Wait()
{
    var executeScript = ((IJavaScriptExecutor) driver).ExecuteScript(waitScript);
    bool result;
    bool tryParse = bool.TryParse(executeScript.SafeToString(), out result);
    return tryParse && result;
}
Run Code Online (Sandbox Code Playgroud)

找到jqGrid是否有记录和加载完成.

我需要更好的东西 - 因为即使上面的两个也没有让驱动程序等到加载完成,如果我们使用jqGrid的本地数据.我也很好奇什么是最好的方式,或者至少是其他人如何处理这个问题.

Ole*_*leg 12

我之前从未使用过Selenium,所以我不确定我是否正确理解了你的问题.首先初始化jqGrid,然后(可选)从服务器加载数据.在初始化阶段,原始<table id="grid"></table>元素将被转换为相对复杂的HTML片段,即网格.在初始化结束时,表(the $("#grid")[0])的DOM元素将获得expando grid.

所以你可以使用像这样的测试

if ($("#grid")[0].grid) {
    // grid is initialized
}
Run Code Online (Sandbox Code Playgroud)

确定网格已初始化.jqGrid在内部使用相同的测试(例如,请参见此处).