【问题标题】:How to get all elements' text attribute at once in Robot Framework?如何在 Robot Framework 中一次获取所有元素的文本属性?
【发布时间】:2016-09-07 08:59:19
【问题描述】:

我有一些 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')} 也一样。

【问题讨论】:

标签: selenium-webdriver robotframework selenium2library


【解决方案1】:

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

【讨论】:

  • innerHTML 将包含标记,如果他们试图获取文本,大多数人不会想要它。
【解决方案2】:

你也可以用这个。

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

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

【讨论】:

    【解决方案3】:

    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}
    

    【讨论】:

    • 请检查我的回答。
    猜你喜欢
    • 2021-03-27
    • 2016-09-30
    • 2019-11-20
    • 2021-04-04
    • 2021-06-26
    • 2017-09-14
    • 2017-02-08
    • 2017-06-07
    • 1970-01-01
    相关资源
    最近更新 更多