Robotframework Robot框架:如何按

Robotframework Robot框架:如何按,robotframework,Robotframework,我有一个带有组合框的网页,可以按价格、名称等对列表进行排序,。。。列表有很多页,所以我需要先获取所有元素,然后再进行排序,检查元素是否正确。对吧? 我正试图做到这一点,并为所有页面导航,并获得所有元素。但它只是获取第一页中的元素。我是一个全新的机器人框架。 有人建议我怎么做吗 ${name_list_actual} Create List ${cnt_pages}= Get Element Count //div[@class='container index-new

我有一个带有组合框的网页,可以按价格、名称等对列表进行排序,。。。列表有很多页,所以我需要先获取所有元素,然后再进行排序,检查元素是否正确。对吧?

我正试图做到这一点,并为所有页面导航,并获得所有元素。但它只是获取第一页中的元素。我是一个全新的机器人框架。 有人建议我怎么做吗

${name_list_actual}    Create List     
${cnt_pages}=    Get Element Count    //div[@class='container index-new-p']/div/nav[@class='text-center']/ul/li/*
Log To Console    ${cnt_pages}
:FOR    ${n}    IN RANGE    1    ${cnt_pages}
\    Click link    //div[@class='container index-new-p']/div/nav/ul/li[${n}]/a
\    ${cnt}=    Get Element Count     //*[@class="title"]/*
    :FOR    ${i}    IN RANGE    1    ${cnt}
    \    ${get_names}    Get Element Attribute    //table[@class='result-table']/tbody/tr[${i}]/td/div/div[2]/div/a    text     
    \    Append To List    ${name_list_actual}    ${get_names}
      ${get_names}=    Select All From List    //table[@class='result-table']/tbody/tr[${i}]/td/div/div[2]/div/a
\    Log To Console    ${name_list_actual}
\    Continue For Loop

非常感谢

首先也是最重要的一点,通过代码示例的缩进,它看起来像是在进行嵌套for循环—外部用于更改页面,内部用于获取每行中的文本。问题是-Robot框架不支持嵌套for循环-

执行时发生的是第一个循环,分页仅使用两条语句运行并完成:

\    Click link    //div[@class='container index-new-p']/div/nav/ul/li[${n}]/a
\    ${cnt}=    Get Element Count     //*[@class="title"]/*
然后,所有其余的都作为第二次执行的一部分执行

一个解决方案是在包含内部循环的表中使用关键字Get All Values,并在当前外部循环中调用它,这将分页

另一个问题-您正在范围内使用,将1作为开始传递,${cnt}作为结束传递;如果它的值为4,那么您可能希望跟踪变量获得从1到4的所有值。 然而,range与包含第一个参数的第一个参数一起工作,与第二个参数一起工作,但与第二个参数无关;因此,它涵盖范围为1到3。要挽救这一点,需要将上限设置为cnt+1,例如${cnt+1}

次要材料:

在循环块中有一条语句,但没有前缀\:

我很惊讶它没有给你一个语法错误-它有效地打断了循环,框架应该抱怨下一行的前缀好像在循环中,但是一行没有启动

-

通过单击更改页面时,不能确保UI已加载新页面的数据。如果这是通过ajax调用实现的,您很可能正在处理上一页的数据,认为它是新的数据—selenium click返回控件非常快,获取文本的操作数正在运行—而UI仍在等待新数据并显示上一个数据

-

在RF版本3.1中-块成员的前缀不是\,而是以END语句结束。
我建议迁移到它-a当前循环最终将被弃用,b在新循环中嵌套将被标记为语法错误您正在启动一个新循环而不终止正在运行的循环,您可以解释一下您面临的编程问题是什么吗?您似乎试图将FOR循环嵌套在您提供的代码段中。这是在robotframework中,需要提取到自己的关键字中
${get_names}=    Select All From List    //table[@class='result-table']/tbody/tr[${i}]/td/div/div[2]/div/a