Использование getAttribute для получения имени класса веб-элемента в собственном контексте

Просмотрел документы по Java получить атрибут. Не удалось понять пункт, упомянутый как:

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

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

Редактировать: сам пробовал.

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"));

person Naman    schedule 07.04.2016    source источник
comment
почему бы тебе просто не попробовать?   -  person jumps4fun    schedule 07.04.2016
comment
Есть ли причина не протестировать его самостоятельно?   -  person Florent B.    schedule 07.04.2016
comment
@KjetilNordin: это больше для уточнения / исправления утверждения документа   -  person Naman    schedule 07.04.2016
comment
@ФлорентБ. : отредактировал вопрос   -  person Naman    schedule 07.04.2016
comment
Я думаю, что ошибка не из этой строки. Можете ли вы показать нам больше кода?   -  person Buaban    schedule 07.04.2016
comment
@Buaban: я отладил и оценил одну и ту же строку кода из той же строки. + добавлено больше деталей   -  person Naman    schedule 07.04.2016
comment
org.openqa.selenium.NoSuchElementException вызывается findElement(). Подробнее см. в seleniumhq.github.io/selenium. /docs/api/java/org/openqa/selenium/. Не могли бы вы показать нам больше кода, пожалуйста?   -  person Buaban    schedule 07.04.2016
comment
Теперь вопрос намного лучше :). Но, как сказал @Buaban, нам нужно увидеть больше контекста, другими словами, больше кода.   -  person jumps4fun    schedule 07.04.2016
comment
@KjetilNordin: я думаю, что весь код после создания драйвера - это только WebElement webElement = <findElement using some locator strategy>; System.out.println("element " + webElement.getAttribute("class"));   -  person Naman    schedule 07.04.2016
comment
@Buaban: на самом деле вы можете попробовать любой WebElement, который у вас есть в собственном контексте.   -  person Naman    schedule 07.04.2016


Ответы (2)


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

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

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

person Naman    schedule 07.04.2016

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

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

person jumps4fun    schedule 07.04.2016
comment
элемент есть, просто appium также выдает ошибку с неправильным атрибутом - person Naman; 08.04.2016
comment
О, хорошо, вы попросили подтверждения, если ваш код был правильным. Единственный вопрос в вашем сообщении был для подтверждения того, что webElement.getAttribute("class") был правильным способом сделать это. Я ответил на ваш вопрос правильно, со ссылкой. Если вы не получили желаемого ответа, значит, вы задали не тот вопрос, на который хотели получить ответ. - person jumps4fun; 08.04.2016
comment
ответ был Нет, я делал это неправильно, получил правильные шаги, также поделился ответом. Спасибо - person Naman; 08.04.2016