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

${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)

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

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')}.

2
Zeinab Abbasimazar 7 Сен 2016 в 11:59

3 ответа

Лучший ответ

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

2
Community 23 Май 2017 в 11:53

Является ли 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
MervS 9 Сен 2016 в 07:25

Вы также можете использовать это.

@{elem} =   Get WebElements     css=._1vC4OE._2rQ-NK

:FOR  ${item}  IN  @{elem}
\   log to console  Item: ${item.text}
0
Bence Kaulics 21 Окт 2018 в 11:00