Selenium es una herramienta de prueba de software automatizada y de código abierto para probar aplicaciones web que tienen la capacidad de ejecutarse en diferentes navegadores y sistemas operativos. Selenium realmente no es una herramienta única, sino un conjunto de herramientas que ayudan a los probadores a automatizar sus aplicaciones de manera más efectiva.
A veces encontraremos el cuadro desplegable de la etiqueta <select> </elect>. No es necesariamente factible hacer clic en la opción en el cuadro desplegable. Selenium proporciona una clase seleccionada específicamente para manejar cuadros desplegables.
<select id = "status" onChange = "" name = "status"> <option value = ""> </option> <opción value = "0"> no revisado </opción> <opción valor = "1"> revisión preliminar aprobada </opción> <opción valor = "2"> revisión pasada </opción> <opción value = "3"> revisión </option </select>
Operaciones en Python-Selenium
Tome Python como un ejemplo para ver la implementación del código Selenium Select.py:
.../Selenium/WebDriver/Support/Select.py
Seleccionar la clase:
def __init __ (self, wewebrem): "" constructor. Se hace una verificación de que el elemento dado es, de hecho, una etiqueta seleccionada. Si no es así, entonces se lanza una inesperada TAGNAMEEXCECE. ! = "Seleccione": Levante inesperadoTagnameException ("Seleccione solo funciona en <select> elementos, no en < %s>" %WEBLement.tag_name) self._el = weweblementMulti = self._el.get_attribute ("múltiple") self.is_multiple = multi! = "falso" Para ver la implementación de la clase Select, debe localizar un elemento. Y una oración de ejemplo se da en el ejemplo.
SELECT (Driver.Find_Element_By_tag_name ("SELECT")). SELECT_BY_INDEX (2) DEF SELECT_BY_INDEX (self, index): "" Seleccione la opción en el índice dado. Esto se realiza examinando el atributo "índice" de un elemento, y no simplemente contando. NosuchelementException ("no pudo localizar elemento con índice % d" % índice)Continúe viendo el uso del método select_by_index () y cumpla con los requisitos del cuadro desplegable dados anteriormente, porque requiere que las opciones del cuadro desplegable deben tener un atributo de índice, como index = "1".
def select_by_value (self, valor): "" "Seleccione todas las opciones que tengan un valor que coincida con el argumento. Es decir, cuando se le da" foo ", seleccionaría una opción como: <opción valor =" foo "> bar </opción>: args: - valor - el valor para coincidir con" "" "" css = "[value = % s]" % self._escapestring (valor) self._el.find_elements (by.css_selector, css) coincidente = false para opt en opts: self._setselected (opt) si no self.is_multiple: returnmatched = trueif no coincidente: elevar nosuchelementException ("no puede localizar opción con valor: % s" % valor) Continúe viendo que el método select_by_value () cumple con nuestros requisitos, que se utiliza para seleccionar el valor de valor de la etiqueta <opción>. Finalmente, puede usar la siguiente opción para seleccionar el cuadro desplegable.
de selenium.webdriver.support.select Import Seleccione
...
sel = Driver.find_element_by_xpath ("// select [@id = 'status']")
Seleccionar (sel) .select_by_value ('0') #not revisado
SELECT (SEL) .SELECT_BY_VALUE ('1') #
Select (sel) .select_by_value ('2') #review pasado
Seleccionar (sel) .select_by_value ('3') #La revisión falló
Operaciones en Java-Selenium
Por supuesto, el uso en Java también es similar, la única diferencia está en el nivel de sintaxis.
paquete com.jase.base;
importar org.openqa.selenium.webdriver;
importar org.openqa.selenium.by.byid;
importar org.openqa.selenium.Chrome.CromedRiver;
importar org.openqa.selenium.support.ui.select;
clase pública selectTest {
public static void main (string [] args) {
WebDriver Driver = new ChromedRiver ();
controlador.get ("http://www.you_url.com");
// ...
Seleccionar sel = new Select (Driver.FindElement (byid.xpath ("// select [@id = 'status']")));
sel.selectbyValue ("0"); // no revisado
Sel.SelectByValue ("1"); // revisión preliminar aprobada
Sel.SelectByValue ("2"); // Revisión aprobada
Sel.SelectByValue ("3"); // La revisión no pasa
}
}