我是 Robot Framework 的新手,我正在尝试实现一个 for 循环,我想在其中循环并存储所有 a 标签的所有文本值。
但我只能获取一个标签的文本。
这是我的代码:
*** Settings ***
Library SeleniumLibrary
*** Variables ***
${url} http://www.practiceselenium.com/practice-form.html
*** Test Cases ***
ExtractLinks
alllinks
close browser
*** Keywords ***
allLinks
open browser ${url}
${allLinksCount} get element count xpath://a
log to console ${allLinksCount}
FOR ${i} IN 1 ${allLinksCount}
${linkText} get text xpath:(//a)[${i}]
log to console ${linkText}
END
这是输出:
==============================================================================
getAllLinks
==============================================================================
ExtractLinks 10
More
ExtractLinks | PASS |
------------------------------------------------------------------------------
getAllLinks | PASS |
1 test, 1 passed, 0 failed
==============================================================================
因此页面上有 10 个 a 标签,但在控制台的输出中只显示了一个“更多”。
是否可以在列表中收集所有链接文本?
答案 0 :(得分:2)
FOR ${i} IN 1 ${allLinksCount}
等价于 python 代码 for i in (1, 10)
。换句话说,它将恰好循环两次。
如果您想遍历 1
和 ${allLinksCount}
之间的范围数字,您应该使用 IN RANGE
。
因为 xpath 从 1 开始计数而不是从 0 开始,您需要稍微调整数字:
FOR ${i} IN RANGE 1 ${allLinksCount}+1
${linkText} get text xpath:(//a)[${i}]
log to console ${linkText}
END
-或-
FOR ${i} IN RANGE ${allLinksCount}
${linkText} get text xpath:(//a)[${i+1}]
log to console ${linkText}
END