2012-03-08 2 views
2

Я работаю с Selenium, чтобы управлять сайтом, который использует Dojo. Поскольку сетка Dojo на сайте использует ленивую загрузку, моей тестовой структуре сложно узнать, закончилась ли/когда сетка закончила загрузку. Тем не менее, Selenium действительно позволяет вам вводить Javascript. Есть ли способ опросить DOM или напрямую использовать js, чтобы узнать, закончила ли сетка загрузка?Как определить, закончилась ли сетка додзе?

ответ

0

dojox.grid.DataGrid имеет внутренний флаг, который получает набор в _onFetchComplete, так что вы можете попробовать

var grid = ... 
if (grid._isLoaded) { 
    ... 
} 
0

Я нашел этот вопрос, потому что я искал то же самое. Самое близкое, что я могу получить, - это подождать, пока сообщение загрузки Доджо исчезнет (если сетка загружается быстро, это трудно понять). Вот что я сейчас использую:

/** Required imports **/ 
import org.openqa.selenium.support.ui.ExpectedConditions; 
import org.openqa.selenium.WebDriver; 
import org.openqa.selenium.firefox.FirefoxDriver; 
import org.openqa.selenium.By; 

/** Code snippet **/ 
WebDriver driver = new FirefoxDriver(); 
WebDriverWait wait = new WebDriverWait(driver, /* Max wait time */ 30); 
wait.until(ExpectedConditions.invisibilityOfElementLocated(By.cssSelector(".dojoxGridLoading")); 

Это меня очень близко.

0

Это решение с использованием не внутреннее событие "onStyleRow":

// Declare myGridLoaded 
var myGridLoaded = false; 
... 
... 
// Connect onStyleRow: 
dojo.connect(grid, "onStyleRow", grid, function(row) { 
    if(!myGridLoaded) { 
     doYourStuff(); 
     // Make sure it runs only once: 
     myGridLoaded = true; 
    } 
}); 
// Now set your store and the handler will run only once 
// when the first row is styled - if any: 
grid.setStore(store); 
Смежные вопросы