2017-01-05 7 views
-1

Я хотел бы знать, если есть способ, с помощью XPath или CssSelectors, если есть последовательный способ ждать, пока jQuery DataTable не завершил загрузку для использования с Селеном.Дождитесь JQuery DataTable загружается с селеном

+0

поделитесь некоторым кодом. –

+0

не нужно, так как все jQuery DataTables имеют один и тот же скелет –

ответ

0

См. https://datatables.net/reference/event/processing.

Это событие вызывается, когда DataTables делает некоторый вид обработки - быть, сортировка, фильтрация или любой другой вид обработки данных

public static void WaitUntilDataTableHasFinishedLoading(this IWebDriver driver, IWebElement processingTable) 
    { 
     processingTable.WaitForAttribute("style", "display: none;"); 
    } 

Использование:

 IWebElement x = SeleniumInfo.Driver.FindElement(By.Id("tableName_processing")); 
SeleniumInfo.Driver.WaitUntilDataTableHasFinishedLoading(x); 
1

DataTables обеспечивает initComplete function:

... чтобы знать, когда ваша таблица полностью инициализирован, данные загружаются и нарисовано

Вы можете комбинировать его с Selenium ожидания() -> до(). Вот пример использования PHP:.

$this->webDriver->wait($timeoutInSeconds, $intervalInMilliseconds)->until(
     // a php anonymous function executed every $intervallInMilliseconds 
     // it tells Selenium to execute some JS in the brower 
     // when this methods returns true, Selenium stops waiting 
     function(){ 
      return 'loaded' === func_get_arg(0)->executeScript(
       // the javascript method provided by DataTable 
       "$('#dataTableId').dataTable({ 
        \"initComplete\": function(settings, json) { 
         return 'loaded'; 
        } 
       } 
      );"); 
     }, 
     "DataTable still not loaded after $timeoutInSeconds." 
); 

Когда DataTable загружен, JS $ ('# dataTableId') DataTable() возвращает 'загружен' и PHP анонимная функция возвращает истину, и Селен перестает ждать. Если DataTable не загружается после $ timeoutInSeconds секунд, исключение будет вызываться с помощью «DataTable, который еще не загружен после $ timeoutInSeconds». сообщение.

Надеюсь, это поможет.

+0

Спасибо. Я собираюсь проверить, могу ли я как-нибудь это сделать в C# –

 Смежные вопросы

  • Нет связанных вопросов^_^