2012-03-19 11 views

Respuesta

4

se puede tratar de escribir algo a través de SendKeys() y comprobar que el atributo valor del cuadro de texto no ha sido cambiado.

+1

Gracias por todas estas respuestas. de alguna manera experimenté todas estas ideas e implementé la elegida. WebElement usernameElement = driver.findElement (By.id ("nombre de usuario")); usernameElement.sendKeys ("SampleText"); – ABCDEFG

3

La interfaz WebElement tiene una función llamada isEnabled.

+0

isEnabled no es lo mismo que probar si solo se lee – Thayne

0

Como no sé para qué necesita esa verificación, voy a publicar algunos ejemplos que pueden ser útiles.

driver.findElements(By.cssSelector("input:not([readonly='readonly'])[type='text']")); 

=> devuelve todos los campos de entrada de texto que se pueden editar

WebElement element = driver.findElement(By.id("username"); 
//can fail if the attribute is not there 
String attribute = element.getAttribute("readonly"); 

=> puede ser que necesite un bloque intento de captura

+0

cómo escribir para el selenio RC? –

+0

no puedo ayudarte con eso, solo estoy usando webdriver y grid2 – Tarken

+0

Está bien :-). Gracias :-)). Obtuve la solución –

1

con 2.21.0 selenio en Java se puede comprobar si su habilitada

driver.findElement(By.id("...")).isEnabled() 
12
  1. es Enabled() no tiene nada en común para leer solo.
  2. String attribute = element.getAttribute ("readonly"); no fallará su prueba, incluso "de solo lectura" está ausente. En este caso, devuelve nulo, pero necesitamos una excepción.

uso como esto:.

WebElement some_element = driver.findElement(By.id("some_id")); 
    String readonly = some_element.getAttribute("readonly"); 
    Assert.assertNotNull(readonly); 

no verifican getAttribute ("sólo lectura") igual ("verdadero") o similares, en diferentes navegadores que puede ser diferente también. (readonly = "readonly" en IE, readonly = "" en FF, etc.)

0

A continuación se muestra el código que mejor funciona para mí. Espero que esto sea útil

WebElement fieldName = driver.findElement(By.id("enter_id")); 
    fieldName.sendKeys("abc"); 
    String fieldNameVal = fieldName.getAttribute("value"); 
    if(fieldNameVal.contentEquals("abc")){ 
    System.out.println("Field is editable"); 
    } 
    else{ 
    System.out.println("Field is non editable" + fieldNameVal); 
    } 
1

Esta es una respuesta tardía, pero debido a que estoy trabajando en esto recientemente, me gustaría compartir mi solución.

Implementé un método para comprobar si un cuadro de texto es de solo lectura o no. Estoy trabajando en un proyecto de Django por lo que el código está en Python, pero yo creo que es fácil portarlo a Java:

from django.contrib.staticfiles.testing import StaticLiveServerTestCase 

class MyTest(StaticLiveServerTestCase): 

    def setUp(self): 
     self.browser = webdriver.Firefox() 

    def _is_text_box_read_only(self, web_element): 
     old_text = web_element.get_attribute("value") 
     web_element.send_keys("test") 
     new_text = web_element.get_attribute("value") 
     web_element.clear() 
     web_element.send_keys(old_text) # Resume to the previous text 
     return old_text == new_text 

Tenga en cuenta que:

  1. Es necesario utilizar el atributo value a obtener el texto ingresado.
  2. Es mejor volver al texto anterior después de la prueba.
  3. El código es solo un extracto que muestra las ideas principales. Puede no ser ejecutable.
Cuestiones relacionadas