tutorial internet español descargar chrome selenium selenium-ide

selenium - internet - Selenio: ¿cómo esperar a que se llenen las opciones en una selección?



selenium ide tutorial español (8)

Estoy usando Selenium por primera vez y estoy abrumado por las opciones. Estoy usando el IDE en Firefox.

Cuando se carga mi página, posteriormente obtiene valores a través de una solicitud JSONP, con la que completa las opciones en una selección.

¿Cómo hago para que Selenium espere que cierta opción en la selección esté presente antes de continuar?


Creo que deberías ser uso

waitForElementPresent command. Si es posible, vamos a ver tu código IDE de selenio.


Encontré algo útil como:

wait.until( ExpectedConditions .presenceOfNestedElementsLocatedBy(By.id(<selectioNId>), By.tagName("option")) )


Hice la siguiente función en C # que devuelve la selección cuando se rellena.

Debe pasar un By para encontrar el elemento y un momento específico para esperar a que se complete.

public static SelectElement FindSelectElementWhenPopulated(this IWebDriver driver, By by, int delayInSeconds) { WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(delayInSeconds)); return wait.Until<SelectElement>(drv => { SelectElement element = new SelectElement(drv.FindElement(by)); if (element.Options.Count >= 2) { return element; } return null; } ); }

En mi caso, valido que la selección tiene más de 2 opciones, puede cambiar el código para que valide la cantidad que se ajuste a sus necesidades.


Puede usar el comando "WaitForSelectOption" donde su valor puede ser etiqueta directa como label = 1-saving El target de la cuenta tendrá el id del objeto


Su trabajo para mí:

WebElement element = driver.findElement(By.xpath("//select[@name=''NamE'']/option[1]")); return element.getAttribute("text");


Tuvimos un problema similar cuando las opciones dentro del menú desplegable se obtuvieron de un servicio de terceros, que a veces era una operación más lenta.

Select select = new Select(driver.findElement(cssSelector("cssSelectorOfSelectBox"))); waitUnitlSelectOptionsPopulated(select)

aquí está la definición de waitUnitlSelectOptionsPopulated

private void waitUntilSelectOptionsPopulated(final Select select) { new FluentWait<WebDriver>(driver) .withTimeout(60, TimeUnit.SECONDS) .pollingEvery(10, TimeUnit.MILLISECONDS) .until(new Predicate<WebDriver>() { public boolean apply(WebDriver d) { return (select.getOptions().size() > 1); } }); }

Nota: En nuestro caso, se necesitaba una comprobación de select.getOptions (). Size ()> 1, ya que teníamos siempre una opción estática.


Usando java 8 Awaitility

Awaitility.await() .atMost(5, TimeUnit.SECONDS) .until(() -> select.getOptions().size() > 0);


waitForElementPresent con un objetivo css .

Ejemplo: esperar

<select id="myselect"></select>

ser poblado con

<option value="123">One-two-three</option>

utilizar

  • Comando: waitForElementPresent
  • Objetivo: css=#myselect option[value=123]
  • Valor: (déjalo vacío)