2016-09-07 3 views
2

У меня есть некоторые веб-элементы, которые имеют тот же префикс для своего атрибута ID. Я могу получить эти элементы сразу с get webelements; Я хочу извлечь свой текстовый атрибут с помощью одной команды. Я написал эту строку:Как получить атрибут текста всех элементов сразу в Robot Framework?

${elList} =  get webelements  xpath=//*[starts-with(@id, '${formName}:${row}')] 
${rowList} = evaluate   [item.get_attribute('text') for item in ${elList}] selenium 

который возвращает:

Evaluating expression '[item.get_attribute('text') for item in [<selenium.webdriver.remote.webelement.WebElement object at 0x7f7b6c5f09d0>, <selenium.webdriver.remote.webelement.WebElement object at 0x7f7b6c5f0990>]]' failed: SyntaxError: invalid syntax (<string>, line 1) 

Я не могу понять проблему здесь; BTW Я буду признателен за любое другое решение для моей проблемы.

EDIT1: Я также попытался ниже код:

${elList} =  get webelements  xpath=//*[starts-with(@id, '${formName}:${row}')] 
:FOR ${item}  IN  @{elList} 
\ log to console ${item.get_attribute('text')} 

Но консоль просто показывает None; это то же самое для ${item.get_attribute('value')}.

+0

Вы близки. Попробуйте: $ {rowList} = Оценить [item.text для элемента в $ elList]. Для пояснения см. Http://robotframework.org/robotframework/latest/libraries/BuiltIn.html#Evaluating%20expressions и http://seleniumhq.github.io/selenium/docs/api/py/webdriver_remote/selenium.webdriver. remote.webelement.html # selenium.webdriver.remote.webelement.WebElement.text – ombre42

ответ

1

Я решил это; Я нашел this ответ и использовал ${item.get_attribute('innerHTML')} в качестве примера. Он работал очень хорошо.

+1

innerHTML будет включать разметку, которую большинство людей не захочет, если они попытаются получить текст. – ombre42

+0

@ Zeinab Abbasi Можете ли вы посмотреть на это и помочь мне? https://stackoverflow.com/questions/44302081/select-treeview-icon-in-python-using-seleniumwebdriver – Abul

0

Действительно ли text действительный атрибут или только содержащий текст? Если это атрибут, возможно, вы можете попробовать следующий метод.

${count}= Get Matching Xpath Count //*[starts-with(@id, '${formName}:${row}')] 
${rowList}= Create List 
:FOR ${i} IN RANGE ${count}+1 
\ ${text}= Get Element Attribute xpath=(//*[starts-with(@id, '${formName}:${row}')])[${i}]@text 
\ Append To List ${rowList} ${text} 
+0

Пожалуйста, проверьте мой ответ. –

0

вы также можете использовать это. @ {элем} = Get WebElements CSS = ._ 1vC4OE._2rQ-NK

:FOR ${item} IN @{elem} 
\ log to console Item: ${item.text}