2011-03-19 17 views
6

Quiero obtener toda la información de WebElement que tenga el nombre de clase "act" o "dact"¿Cómo se usa OR Condition en el método selenium findElements() para cualquier selector?

Estoy usando la línea de código debajo para obtener toda la información de clase para "actuar". ¿Alguien puede ayudarme a usar la condición OR en el nombre de la clase?

List<WebElement> nL2 = driver.findElements(By.className("act"));

Algo parecido a esto; para que no tenga que escribir dos líneas separadas para cada clase.

//this is not working

List<WebElement> nL2 = driver.findElements(By.className("act | dact"));

Gracias!

+1

Esto no es XPath. Esto es XPath '// WebElement [@class [contains (concat ('',., ''), 'Act') o contiene (concat ('',., ''), 'Dact')]]' –

+0

@ Alejandro, mi error. Modificó mi pregunta. de hecho, quiero usar la condición OR en el método fineElements() usando cualquier selector. – OverrockSTAR

Respuesta

7

¿Puedes combinar las dos listas?

List<WebElement> act = driver.findElements(By.className("act")); 
List<WebElement> dact = driver.findElements(By.className("dact")); 
List<WebElement> all = new ArrayList<WebElement>(); 
all.addAll(act); 
all.addAll(dact); 

Como alternativa, se puede usar un localizador de XPath como lo sugiere @Alejandro

List<WebElement> all = driver.findElements(By.xpath("//*[@class='act' or @class='dact']")); 
+0

Gracias Dave, no pensé en hacer esto. – OverrockSTAR

+0

¿Podemos también usar 'By.className (" X o Y ");' o esta condición O solo se aplica a XPath? – OverrockSTAR

+1

'className' toma un solo nombre de clase. –

3

Sé que esta pregunta es muy viejo, pero probablemente la forma más sencilla de hacerlo es utilizar un selector CSS como

driver.findElements(By.cssSelector(".act, .dact")); 

Debería preferir los selectores de CSS a XPath porque la compatibilidad con el navegador es mejor y son más eficientes (y creo que son más fáciles de aprender/entender). Los selectores de CSS pueden hacer todo By.className() y más. Son muy poderosos y muy útiles.

Algunas referencias de selector CSS para comenzar.

W3C CSS Selector Reference

Sauce Labs CSS Selector Tips

+0

Esta es, de lejos, la solución superior en los tiempos modernos. – Syndog

Cuestiones relacionadas