机器人框架 - 如何在有页面的情况下遍历 X 元素,直到找到元素 Y

问题描述 投票:0回答:1

我最近刚接触机器人框架,我似乎无法在任何地方找到我的确切问题的答案。

上下文:我需要浏览页面上的所有标题,直到找到由全局变量确定的特定标题。 UI 没有唯一的 id,因此当我输入标题定位器时,我会得到 20 个或更多与此 XPath 匹配的元素。

还有分页,这意味着我要查找的标题可能在另一页上。

我的全局变量,即我正在寻找的标题,是

${audience_name_value}
,我在另一个关键字中获取它的值。我认为这一点是有效的,因为当这个标题位于同一页面上时,测试通过关键字

Page Should Contain Element    ${current_page['audience_name_card_holder_title']}${audience_name_value}")]
.

问题是当我要查找的标题位于第二页或第三页等时

我想迭代每个标题,直到找到正确的标题,或者单击下一个箭头继续此搜索。


起初,我收到错误:

TypeError: Expected argument 1 to be a list or list-like, got string instead.

the created audience is in the inactive custom audience section
   ${elements}=  Get WebElements                  xpath://*[@id="pageContainer"]//div[contains(@class,"audienceCard__header__name")]/a
    FOR    ${element}    IN    @{elements}
        ${text}=    Get Text    ${element}
        Exit For Loop If        ${text} == ${audience_name_value}
    END

所以我尝试在下面创建一个列表,但现在我不断收到此错误:

Evaluating expression 'RBT 2021-12-21 == RBT 2021-12-21' failed: SyntaxError: invalid syntax (<string>, line 1)

the created audience is in the inactive custom audience section
    ${elements}=  Get WebElements                  xpath://*[@id="pageContainer"]//div[contains(@class,"audienceCard__header__name")]/a
    ${list}=    Create List    ${elements}
    FOR    ${element}    IN    @{list}
        ${text}=    Get Text    ${element}
        Exit For Loop If        ${text} == ${audience_name_value}
    END
    

我没有主意了,似乎找到了标题,但有一个语法错误,我似乎无法修复。

我恳请帮助:D,谢谢!

selenium-webdriver robotframework ui-automation webautomation
1个回答
0
投票

在此代码中,您创建了一个列表,但它仍然获取从 Web 元素返回的字符串。最好使用如下所示的东西: 首先,捕获 ${var} 中的完整网页内容,然后使用 kw 获取包含您要从 ${var} 中查找的字符串或获取子字符串的行,将其与 kw 运行关键字 If/IF 循环一起使用。

© www.soinside.com 2019 - 2024. All rights reserved.