2016-02-18 2 views
1

Я хочу отобразить несколько элементов и когда карта WebElement я жду, пока элемент не станет интерактивным таким образом:Подождите, пока WebElements не станет интерактивным

val driver: WebDriver... 
var wait: WebDriverWait = new WebDriverWait(driver, 10) 
val element: WebElement = wait.until(ExpectedConditions.visibilityOfElementLocated(By.cssSelector("input[id=Email]"))) 

Теперь в случае, если я хочу найти несколько элементов, и с помощью FindElements вместо из 1 элемента какой будет код?

Стараюсь:

val elements: WebElements = wait.until(ExpectedConditions.visibilityOfElementLocated(By.cssSelector("locator"))) 

ответ

3

Вы можете использовать visibilityOfAllElementsLocatedBy

val elements: List[WebElement] = wait.until(ExpectedConditions.visibilityOfAllElementsLocatedBy(By.cssSelector("locator"))).toList 

Как примечание стороны, ждать элемента, чтобы быть интерактивными вы можете использовать elementToBeClickable

val element: WebElement = wait.until(ExpectedConditions.elementToBeClickable(By.cssSelector("input[id=Email]"))) 

Для более ожидаемые условия относятся here.

+0

Выражение типа util.List [WebElement] не соответствует ожидаемому типу List [WebElement], это потому, что я использую Scala? –

+0

@ davidhol На самом деле я не знаю, Скала, я googled, как определить List в Scala. 'visibilityOfAllElementsLocatedBy' возвращает список WebElement (' List 'в Java). – Guy

+2

@davidhol, вы должны сделать это для того, чтобы исправить эту маленькую проблему с преобразованием: Добавить следующий импорт: 'импорт scala.collection.JavaConversions._' Тогда в вашем коде, вы можете просто бросить, как например: 'val films: List [Any] = driver.findElements (By.xpath (" // div [@ class = 'filmo-category-section'] [1]/div [содержит (@class, 'filmo-row') ]/b/a ")). toList' –