2

我有一些 web 元素,它们的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')}

4

3 回答 3

2

我已经解决了这个问题;我找到了这个答案并用作${item.get_attribute('innerHTML')}尝试。它工作得很好。

于 2016-09-10T06:15:24.793 回答
2

你也可以用这个。

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

:FOR  ${item}  IN  @{elem}
\   log to console  Item: ${item.text}
于 2017-07-25T07:18:53.440 回答
1

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}
于 2016-09-09T07:25:27.213 回答