Trabalhando com elementos select
Os elementos select podem exigir um pouco de código padrão para serem automatizados.
Para reduzir isso e tornar seus testes mais limpos, existe uma
Classe Select
no pacote de suporte do Selenium.
Para usá-lo, você precisará da seguinte instrução de importação:
import org.openqa.selenium.support.ui.Select;
from selenium.webdriver.support.select import Select
using OpenQA.Selenium.Support.UI
include Selenium::WebDriver::Support
// This feature is not implemented - Help us by sending a pr to implement this feature
import org.openqa.selenium.support.ui.Select
Você pode então criar um objeto Select usando um WebElement que
faz referência a um elemento <select>
.
WebElement selectElement = driver.findElement(By.id("selectElementID"));
Select selectObject = new Select(selectElement);
select_element = driver.find_element(By.ID,'selectElementID')
select_object = Select(select_element)
IWebElement selectElement = driver.FindElement(By.Id("selectElementID"));
var selectObject = new SelectElement(selectElement);
select_element = driver.find_element(id: 'selectElementID')
select_object = Select(select_element)
// This feature is not implemented - Help us by sending a pr to implement this feature
val selectElement = driver.findElement(By.id("selectElementID"))
val selectObject = new Select(selectElement)
O objeto Select agora lhe dará uma série de comandos
que permitem que você interaja com um elemento <select>
.
Em primeiro lugar, existem diferentes maneiras de selecionar uma opção
do elemento <select>
.
<select>
<option value=value1>Bread</option>
<option value=value2 selected>Milk</option>
<option value=value3>Cheese</option>
</select>
Existem três maneiras de selecionar a primeira opção do elemento acima:
// Select an <option> based upon the <select> element's internal index
selectObject.selectByIndex(1);
// Select an <option> based upon its value attribute
selectObject.selectByValue("value1");
// Select an <option> based upon its text
selectObject.selectByVisibleText("Bread");
# Select an <option> based upon the <select> element's internal index
select_object.select_by_index(1)
# Select an <option> based upon its value attribute
select_object.select_by_value('value1')
# Select an <option> based upon its text
select_object.select_by_visible_text('Bread')
// Select an <option> based upon the <select> element's internal index
selectObject.SelectByIndex(1);
// Select an <option> based upon its value attribute
selectObject.SelectByValue("value1");
// Select an <option> based upon its text
selectObject.SelectByText("Bread");
# Select an <option> based upon the <select> element's internal index
select_object.select_by(:index, 1)
# Select an <option> based upon its value attribute
select_object.select_by(:value, 'value1')
# Select an <option> based upon its text
select_object.select_by(:text, 'Bread')
// This feature is not implemented - Help us by sending a pr to implement this feature
// Select an <option> based upon the <select> element's internal index
selectObject.selectByIndex(1)
// Select an <option> based upon its value attribute
selectObject.selectByValue("value1")
// Select an <option> based upon its text
selectObject.selectByVisibleText("Bread")
You can then check which options are selected by using:
// Return a List<WebElement> of options that have been selected
List<WebElement> allSelectedOptions = selectObject.getAllSelectedOptions();
// Return a WebElement referencing the first selection option found by walking down the DOM
WebElement firstSelectedOption = selectObject.getFirstSelectedOption();
# Return a list[WebElement] of options that have been selected
all_selected_options = select_object.all_selected_options
# Return a WebElement referencing the first selection option found by walking down the DOM
first_selected_option = select_object.first_selected_option
// Return a List<WebElement> of options that have been selected
var allSelectedOptions = selectObject.AllSelectedOptions;
// Return a WebElement referencing the first selection option found by walking down the DOM
var firstSelectedOption = selectObject.AllSelectedOptions.FirstOrDefault();
# Return an Array[Element] of options that have been selected
all_selected_options = select_object.selected_options
# Return a WebElement referencing the first selection option found by walking down the DOM
first_selected_option = select_object.first_selected_option
// This feature is not implemented - Help us by sending a pr to implement this feature
// Return a List<WebElement> of options that have been selected
val allSelectedOptions = selectObject.allSelectedOptions
// Return a WebElement referencing the first selection option found by walking down the DOM
val firstSelectedOption = selectObject.firstSelectedOption
Ou você pode apenas estar interessado em quais elementos <option>
o elemento <select>
contém:
// Return a List<WebElement> of options that the <select> element contains
List<WebElement> allAvailableOptions = selectObject.getOptions();
# Return a list[WebElement] of options that the <select> element contains
all_available_options = select_object.options
// Return a IList<IWebElement> of options that the <select> element contains
IList<IWebElement> allAvailableOptions = selectObject.Options;
# Return an Array[Element] of options that the <select> element contains
all_available_options = select_object.options
// This feature is not implemented - Help us by sending a pr to implement this feature
// Return a List<WebElement> of options that the <select> element contains
val allAvailableOptions = selectObject.options
Se você deseja desmarcar qualquer elemento, agora você tem quatro opções:
// Deselect an <option> based upon the <select> element's internal index
selectObject.deselectByIndex(1);
// Deselect an <option> based upon its value attribute
selectObject.deselectByValue("value1");
// Deselect an <option> based upon its text
selectObject.deselectByVisibleText("Bread");
// Deselect all selected <option> elements
selectObject.deselectAll();
# Deselect an <option> based upon the <select> element's internal index
select_object.deselect_by_index(1)
# Deselect an <option> based upon its value attribute
select_object.deselect_by_value('value1')
# Deselect an <option> based upon its text
select_object.deselect_by_visible_text('Bread')
# Deselect all selected <option> elements
select_object.deselect_all()
// Deselect an <option> based upon the <select> element's internal index
selectObject.DeselectByIndex(1);
// Deselect an <option> based upon its value attribute
selectObject.DeselectByValue("value1");
// Deselect an <option> based upon its text
selectObject.DeselectByText("Bread");
// Deselect all selected <option> elements
selectObject.DeselectAll();
# Deselect an <option> based upon the <select> element's internal index
select_object.deselect_by(:index, 1)
# Deselect an <option> based upon its value attribute
select_object.deselect_by(:value, 'value1')
# Deselect an <option> based upon its text
select_object.deselect_by(:text, 'Bread')
# Deselect all selected <option> elements
select_object.deselect_all
// This feature is not implemented - Help us by sending a pr to implement this feature
// Deselect an <option> based upon the <select> element's internal index
selectObject.deselectByIndex(1)
// Deselect an <option> based upon its value attribute
selectObject.deselectByValue("value1")
// Deselect an <option> based upon its text
selectObject.deselectByVisibleText("Bread")
// Deselect all selected <option> elements
selectObject.deselectAll()
Finalmente, alguns elementos <select>
permitem que você selecione mais de uma opção.
Você pode descobrir se o seu elemento <select>
é um deles usando:
Boolean doesThisAllowMultipleSelections = selectObject.isMultiple();
does_this_allow_multiple_selections = select_object.is_multiple
bool doesThisAllowMultipleSelections = selectObject.IsMultiple;
does_this_allow_multiple_selections = select_object.multiple?
// This feature is not implemented - Help us by sending a pr to implement this feature
val doesThisAllowMultipleSelections = selectObject.isMultiple