Selenio: ¿Cómo afirmo que un determinado elemento está presente en una determinada celda de una determinada tabla?

Tengo una tabla en mi página que se supone que contiene un cierto elemento. Puedo identificar la tabla por su nombre (tiene un nombre único) y también puedo identificar el elemento fácilmente. Me gustaría afirmar que el elemento está presente en la fila r , columna c de la tabla. ¿Cuál es la forma más limpia de hacerlo con comandos de Selenium?

Observaciones:

  • No quiero usar más que el nombre de la tabla para ubicarlo (no quiero que todos los div\div\table\div\tbody\td\tr[r]\td[c] en el código) .
  • Estoy usando Selenium en PHPUnit. Por lo tanto, puedo usar la lógica de PHP para la tarea, aunque no quiero ninguna lógica compleja para una tarea tan simple.

Aclaración:

Si el elemento en la celda es simplemente texto, entonces puedo recuperar ese texto de esta manera:

$this->getText("xpath=//table[@name='tableName']//tr[".$r."]//td[".$c."]"); (PHP)

Pero, ¿y si la celda tiene un elemento que no es solo texto plano? ¿Qué pasa si el elemento es un enlace ( link=anchor ) o un botón ( //button[@type='button'] ) o una imagen o algo más complejo?

Necesito afirmar que un elemento especificado por un localizador de ese elemento reside en una celda determinada.

Parece que quieres isElementPresent(...locator of element...) . Por ejemplo:

 $cell = "//table[@name='tableName']//tr[".$r."]/td[".$c."]"; $foundLink = $this->isElementPresent("xpath=".$cell."/a[.='".linktext."']"); $foundButton = $this->isElementPresent("xpath=".$cell."/button[@type='button']"); $foundImage = $this->isElementPresent("xpath=".$cell."/img[ends-with(@src='pretty-pony.gif')]"); 

isElementPresent() devuelve true si es así, false si no.

Podrías probar getXpathCount de Selenium

$ this -> (“xpath = // table [@ name = ‘tableName’] // tr [“. $ r. “] // td [“. $ c. “] // TAG “);
Esto devolverá la cantidad de coincidencias que obtiene xpath. en tu caso, cero significaría un fracaso.