Selenium 我可以用robot框架计算一个表的多个页面上的行数吗?

Selenium 我可以用robot框架计算一个表的多个页面上的行数吗?,selenium,robotframework,Selenium,Robotframework,我对机器人还很陌生,在工作中独自工作了一个月左右 目前,我正在尝试计算正在测试的应用程序中表中行的总数。铬基 这就是我正在使用的: ${count}= get element count //table[@class='options-table']/tbody/tr 这将返回值5-这是第一页的计数。然而,我希望它能带回76页,因为有多个页面 有人能帮助我们恢复多页的行数吗 ${count}= get element count //table[@class='options-tabl

我对机器人还很陌生,在工作中独自工作了一个月左右

目前,我正在尝试计算正在测试的应用程序中表中行的总数。铬基

这就是我正在使用的:

${count}=  get element count  //table[@class='options-table']/tbody/tr
这将返回值5-这是第一页的计数。然而,我希望它能带回76页,因为有多个页面

有人能帮助我们恢复多页的行数吗

${count}=  get element count  //table[@class='options-table']/tbody/tr
预期结果:76

实际结果:5仅在第一页


为了避免在页面中迭代一个稍微复杂的逻辑,可以将Robot框架关键字中的元素计数相加,例如在Python中

在这种情况下,您需要一个关键字,该关键字将元素定位器//table[@class='options-table']/tbody/tr作为特定的元素,并包含一个页面URL列表

要实现此类关键字,请创建一个类似ExtendedSeleniumLib.py的文件:

从robot.libraries.BuiltIn导入内置 def get_element_count_from_pageslocator,*page_URL: seleniumlib=内置。获取\u库\u实例'SeleniumLibrary' 元素计数=0 对于第_页url中的url: 硒酸钠 element_count+=seleniumlib.get_element_countlocator 返回元素计数 从测试代码中,您可以像这样使用它:

***背景*** 硒库 库扩展seleniumlib ***变数*** ${SE HEADER LOCATOR}//a[@class='site-HEADER-link fs-headline1 fw bold'] ***测试用例*** 计算多页上的元素数示例 [设置]打开浏览器https://stackoverflow.com 火狐 最大化浏览器窗口 将Selenium速度设置为0.1 ${count}=从页面${SE头定位器}获取元素计数 ... https://iot.stackexchange.com/ ... https://sqa.stackexchange.com/ ... https://robotics.stackexchange.com/ 应等于整数${count}3 [拆卸]关闭浏览器 此示例迭代三个堆栈交换站点,并统计头元素。由于每页上应该只有一个,因此预期结果为3。基于此,您应该能够计算页面上的表行数


关于如何配置库和资源的搜索路径,请查看Robot Framework User Guide;中的相关章节。如果将python文件放在robot文件所在的同一目录中,则无需执行任何操作。

为了避免在页面中迭代一个稍微复杂的逻辑,可以将robot Framework关键字中的元素计数相加,例如在python中

在这种情况下,您需要一个关键字,该关键字将元素定位器//table[@class='options-table']/tbody/tr作为特定的元素,并包含一个页面URL列表

要实现此类关键字,请创建一个类似ExtendedSeleniumLib.py的文件:

从robot.libraries.BuiltIn导入内置 def get_element_count_from_pageslocator,*page_URL: seleniumlib=内置。获取\u库\u实例'SeleniumLibrary' 元素计数=0 对于第_页url中的url: 硒酸钠 element_count+=seleniumlib.get_element_countlocator 返回元素计数 从测试代码中,您可以像这样使用它:

***背景*** 硒库 库扩展seleniumlib ***变数*** ${SE HEADER LOCATOR}//a[@class='site-HEADER-link fs-headline1 fw bold'] ***测试用例*** 计算多页上的元素数示例 [设置]打开浏览器https://stackoverflow.com 火狐 最大化浏览器窗口 将Selenium速度设置为0.1 ${count}=从页面${SE头定位器}获取元素计数 ... https://iot.stackexchange.com/ ... https://sqa.stackexchange.com/ ... https://robotics.stackexchange.com/ 应等于整数${count}3 [拆卸]关闭浏览器 此示例迭代三个堆栈交换站点,并统计头元素。由于每页上应该只有一个,因此预期结果为3。基于此,您应该能够计算页面上的表行数


关于如何配置库和资源的搜索路径,请查看Robot Framework User Guide;中的相关章节。如果您将python文件放在robot文件所在的同一目录中,则无需执行任何操作。

请检查下面的代码,它假设总页数不会超过100页,因为我不知道该网页,您可以从网页中获取此数字(如果可用)。此外,如果您确定每页的总行数始终为5,则可以使用以下公式 [5*总页数-1+最后一页的行数] 这可以提供所有页面的总行数,而无需遍历所有页面。此外,请为成功运行添加任何时间同步步骤

Get Count of All Pages
    ${next_page_locator}    Set Variable    enter next page icon/link xpath here
    ${first_row_locator}    Set Variable    enter first row xpath here
    ${total_count}    set variable    0
    : FOR    ${index}    IN RANGE    1    100
    \    Wait Until Element Is Visible    ${first_row_locator}
    \    ${count}    get element count    //table[@class='options-table']/tbody/tr
    \    ${total_count}    evaluate    ${count} + ${total_count}
    \    ${next_link_present}    Run Keyword And Return Status    Page Should Contain Element    ${next_page_locator}
    \    exit for loop if    ${next_link_present} is ${False}
    \    Click Element    ${next_page_locator}

请检查下面的代码,它假设总数为 由于我不知道该网页,所以页面的数量不会超过100,如果可用,您可以从该网页获取此数字。此外,如果您确定每页的总行数始终为5,则可以使用以下公式 [5*总页数-1+最后一页的行数] 这可以提供所有页面的总行数,而无需遍历所有页面。此外,请为成功运行添加任何时间同步步骤

Get Count of All Pages
    ${next_page_locator}    Set Variable    enter next page icon/link xpath here
    ${first_row_locator}    Set Variable    enter first row xpath here
    ${total_count}    set variable    0
    : FOR    ${index}    IN RANGE    1    100
    \    Wait Until Element Is Visible    ${first_row_locator}
    \    ${count}    get element count    //table[@class='options-table']/tbody/tr
    \    ${total_count}    evaluate    ${count} + ${total_count}
    \    ${next_link_present}    Run Keyword And Return Status    Page Should Contain Element    ${next_page_locator}
    \    exit for loop if    ${next_link_present} is ${False}
    \    Click Element    ${next_page_locator}

任何浏览器工具都只能看到当前页面上的内容。如果要获取所有页面的总行数,则必须向前导航到所有页面并计算每个页面上的行数。任何浏览器工具只能查看当前页面上的内容。如果要获得所有页面的总行数,则必须向前导航到所有页面,并对每个页面上的行数进行计数。