2014-09-25 10 views
5

Nel caso seguente, Appium è in grado di localizzare correttamente gli elementi per classe, ma quando vogliamo manipolare i dati in base al contenuto di ogni elemento viene visualizzato un errore . Perché non possiamo ottenere l'attributo per content-desc? Qualche consiglio apprezzato.Appio non è in grado di ottenere dati di attributo "content-desc"

List<WebElement> arrayOfProperties2 = driver.findElementsByClassName("android.view.View"); 
    List<WebElement> propertyMarkerEle = new ArrayList<>(); 

    System.out.println("Found arrayOfProperties2 total: "+ arrayOfProperties2.size()); 

    for (WebElement property : arrayOfProperties2){ 
     String contentDesc = property.getAttribute("content-desc"); 
     if (contentDesc.contains("property")) 
      propertyMarkerEle.add(property); 

Error: Found arrayOfProperties2 total: 32
org.openqa.selenium.NoSuchElementException: An element could not be located on the page using the given search parameters. (WARNING: The server did not provide any stacktrace information)

+0

Questo può aiutare a indovinare https://github.com/appium/appium/issues/5142. Credo che le modifiche al codice siano state introdotte. – nullpointer

risposta

15

Usa "nome"

property.getAttribute("name");

+0

Ciao, driver.findElementByXPath ("android.widget.TextView []"). GetAttribute ("nome"); non sta ottenendo il testo degli attributi dall'app .. puoi dirmi dove ho sbagliato nel codice .. class, package e content-desc non si stampa, ma il restante dettaglio del nodo stampa con successo ..non so cosa sia sbagliato .. Grazie per l'anticipo –

+0

potrebbe non avere una descrizione del contenuto allora ?? – TinyTimZamboni

+0

No Tiny .. ha la descrizione del contenuto su un particolare elemento .. –

-2

testo o contenuti-disc può essere utilizzato come

driver.findElement(By.xpath("//*[@text='Remove Contact']")) 

può essere facile come

driver.findElement(By.name("Remove Contact")) 


driver.findElement(By.xpath("//*[@content-desc='Remove Contact']")) 

può essere utilizzato come

driver.findElement(By.name("Remove Contact")) 
+0

In python, content-desc non sembra mappare a find_element_by_name. Ahimè! – kiminoa

0

provare questo:

driver.findElement(By.AccessibilityID(""));

1

L'elenco dei nomi degli attributi accettati può essere trovato in boolean attrbutes e string attributes.

Gli attributi booleani sono:

  • abilitato
  • controllabile
  • controllato
  • cliccabile
  • attivabile
  • focalizzata
  • longClickable
  • scrolla ble
  • selezionato
  • visualizzata

I attibutes stringa sono:

  • contentDescription
  • testo
  • className
  • ResourceId

Ho provato questo usando i collegamenti Python.

Il credito va a TikhomirovSergey in un github comment.

Problemi correlati