【问题标题】:get all links and iterate through list (robot framework)获取所有链接并遍历列表(机器人框架)
【发布时间】:2017-05-02 01:19:12
【问题描述】:

我想检查某个收件箱中的所有项目并一一打开它们,直到没有更多项目(将对每个项目进行一些处理,因此它们在访问后消失)。这些项目是基于工作流的,所以当它打开时,它们将被处理并从收件箱中消失。

如何让机器人列出这些物品并一一打开?这是完成此类任务的正确方法吗?我在 eclipse w python 中使用机器人框架

//span/a 捕获收件箱中的所有相关链接 (10)

我有以下代码,它获取所有链接并将它们放在一个列表中,但我不知道最好的方法是一个一个地打开它们(每次打开链接并且某些 X 进程有后返回收件箱已完成)。

Wait Until Element is Visible     xpath=//a/span
# Count number of links on page
${AllLinksCount}=    Get Matching Xpath Count    xpath=//a/span

# Log the count of links
Log    ${AllLinksCount}

# Create a list to store the link texts
@{LinkItems}    Create List

# Loop through all links and store links value that has length more than 1 character
: FOR    ${INDEX}    IN RANGE    1    ${AllLinksCount}
\    Log    ${INDEX}
\    ${lintext}=    Get Text    xpath=(//a/span)[${INDEX}]
\    Log    ${lintext}
\    ${linklength}    Get Length    ${lintext}
\    Run Keyword If    ${linklength}>1    Append To List    ${LinkItems}    ${lintext}
${LinkSize}=    Get Length    ${LinkItems}
Log    ${LinkSize}

Comment    Print all links
: FOR    ${ELEMENT}    IN    @{LinkItems}
\    Log    ${ELEMENT}

【问题讨论】:

  • 您已经尝试过什么?遇到什么障碍?
  • @Andersson 我放了一些我现在正在使用的代码来将链接放入列表中。但我不知道一个一个打开它们的好方法是什么(打开链接时会打开一个页面,我在其中进行一些处理并关闭它以再次返回收件箱)
  • 你的方法看起来不错。 (对我来说,完成工作的任何方法都是好的。以后可以改进。)所以如果你有一个链接列表并且你打开它们并且它们从主页上消失,并且如果剩余的链接 ID/索引保持不变,没有问题。您还可以使用Get Web Elements 关键字进行探索。

标签: python selenium robotframework


【解决方案1】:

如果你想回到你所在的页面,你可以在点击链接之前获取位置,然后在处理后返回那个url。您甚至不需要为此创建链接测试列表。对于您的 xpath,将其设为 //a/span[string-length(text())>1],这样您就不再需要 run keyword if 关键字了:

Wait Until Element is Visible
xpath=//a/span[string-length(text())>1]
${AllLinksCount}=    Get Matching Xpath Count    xpath=//a/span[string-length(text())>1]
Log    ${AllLinksCount}
: FOR    ${INDEX}    IN RANGE    1    ${AllLinksCount}
\    Log    ${INDEX}
\    ${currUrl}    get location
\    click element    xpath=(//a/span[string-length(text())>1])[1]
\    do processing here
\    go to    ${currUrl}

如果 URL 发生变化,那么您只需通过之前的方式再次返回该页面。

【讨论】:

  • 您总是单击具有该 xpath 的元素的第一个实例,因为正如您所说,单击的那些被删除..
  • 我会尝试你的方法,看看它是否适用于我正在测试的解决方案,感谢您的澄清
猜你喜欢
  • 2021-12-04
  • 2018-12-21
  • 2016-09-24
  • 2020-10-29
  • 2021-01-17
  • 2017-07-23
  • 2014-08-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多