2016-04-07 3 views
0

Прошел через java-документы от getAttribute. Не мог понять точку упоминается как:Использование getAttribute для получения имени класса веб-элемента в родном контексте

Наконец, имена следующие часто неправильно капитализируются атрибут/свойство оцениваются, как и ожидалось: «класс» «только для чтения»

Может кто-нибудь подтвердить, если webElement.getAttribute("class") возвращает имя класса элемента или нет?

Edit: попробовать это сам

System.out.println("element " + webElement.getAttribute("class")); 

Я получаю

org.openqa.selenium.NoSuchElementException

Примечание: Элемент существует на экран, так как я могу успешно выполнять действия на элементе нт:

webElement.click(); //runs successfully 

Код:

WebElement webElement = <findElement using some locator strategy>; 
System.out.println("element " + webElement.getAttribute("class")); 
+1

почему бы вам просто не попробовать? – KjetilNordin

+0

Любые причины не тестировать его самостоятельно? –

+0

@KjetilNordin: это больше, чтобы уточнить/исправить заявление doc – nullpointer

ответ

1

Таким образом, ответ на проблему был дан ответ на GitHub в списке проблем appium/java-client by @SergeyTikhomirov. Простое решение для этого является доступ к свойству Classname следующим образом:

webElement.getAttribute("className")); //instead of 'class' as mentioned in the doc 

реализации основной метод здесь: AndroidElement

-1

Согласно this answer, да вы делаете это правильно. Ваш org.openqa.selenium.NoSuchElementException выброшен, потому что селен не может найти сам элемент.

Вы отправили оповещение, о webElement.click() действительно работающий, к сожалению, не включен в код, который вы опубликовали. Поскольку это не является частью фактического вопроса, я оставляю этот ответ, не обращаясь к нему.

+0

Элемент есть, его просто то, что appium также выдает ошибку с неправильным атрибутом – nullpointer

+0

Ну, вы попросили подтвердить, был ли ваш код верным. Единственный вопрос в вашем сообщении - это подтверждение того, что 'webElement.getAttribute (« class »)' был правильным способом его выполнения. Я правильно ответил на ваш вопрос со ссылкой. Если вы не получили ответ, который хотите, это потому, что вы не задали вопрос, на который вы хотели получить ответ. – KjetilNordin

+0

ответ был «Нет, я не делал это правильно», получил правильные шаги, поделился также и ответом. благодаря – nullpointer

0
public String getStringAttribute(final String attr) 
    throws UiObjectNotFoundException, NoAttributeFoundException { 
String res; 
if (attr.equals("name")) { 
    res = getContentDesc(); 
    if (res.equals("")) { 
    res = getText(); 
    } 
} else if (attr.equals("contentDescription")) { 
    res = getContentDesc(); 
} else if (attr.equals("text")) { 
    res = getText(); 
} else if (attr.equals("className")) { 
    res = getClassName(); 
} else if (attr.equals("resourceId")) { 
    res = getResourceId(); 
} else { 
    throw new NoAttributeFoundException(attr); 
} 
return res; 

}