【问题标题】:Automation on Ag-grid using Robot Framework使用机器人框架在 Ag-grid 上实现自动化
【发布时间】:2017-11-27 20:24:00
【问题描述】:

我们有一个基于 ag-grid 的 UI。定位元素有很多挑战,因为它没有 ID 并且类名非常混乱。下面是一个例子。请建议我可以克服这些问题的方法,如果有任何材料或链接,请分享。提前致谢。

Ques) 我想获取“收入”标题下方的数据。以前,我曾在其中行/数据将是“收入”标题的子元素的应用程序中工作过,但现在,情况有所不同。标签的位置与“收入”标题无关(它们不是“收入”的子元素)。附件:显示Header及其下的数据。

请建议我遵循的方法。另外,这将有助于我创建一个通用函数。

【问题讨论】:

    标签: angular automated-tests robotframework ag-grid


    【解决方案1】:

    因为网格是一个可预测的对象,所以它是有结构的,即使一开始并不明显。如果您希望为ag-grid 创建一个通用函数,那么我建议将ag-Grid Testing Utilities(100 行)中的测试库函数移植到 Python。这里解释了库的使用:documentation

    或者,您可以使用关键字将库作为一个整体加载:Get File,后跟文件内容的Execute Javascript,与您要在 JS 文件中执行的命令连接。

    然而,它似乎主要围绕这个获取定位器的函数:

    getCssSelectorForRowAndCol = function (row, col, additionalSelector) {
       additionalSelector = additionalSelector || '';
       return "div[row-id=\"" + row + "\"] div[col-id=\"" + col + "\"] " + additionalSelector;
    };
    

    所以这应该允许您创建自定义函数,甚至自定义定位器策略。一个简短的例子有这个SO answer

    编辑:以回答以下问题为例:

    *** Settings ***
    Library    Selenium2Library
    
    Test Setup        Start Browser
    Test Teardown     Close Browser
    Suite Teardown    Close All Browsers
    
    *** Test Cases ***
    Example Get Values
        ${cell_value_row_2}    Get Cell Value Test    name         2
        Log To Console    Cell value for Name in Row 2: [${cell_value_row_2}]
    
        ${cell_value_row_3}    Get Cell Value Test    mobile    3
        Log To Console    Cell value for mobile in Row 3: [${cell_value_row_3}]  
    
    *** Keywords ***
    Get Cell Value Test
        [Arguments]    ${colum_name}    ${row_number}=1
        ${get_Text}    Get Text    xpath=//div[@row-id="${row_number}"]/div[@col-id="${colum_name}"]
        [Return]    ${get_Text}
    
    Start Browser
        Open Browser    https://www.ag-grid.com/example-runner/angular.php?section=angular-getting-started&example=rich-grid-example&fontawesome=1&bootstrap=1&enterprise=1&grid=%7B%22theme%22%3A%22ag-theme-fresh%22%2C%22height%22%3A%22100%25%22%2C%22width%22%3A%22100%25%22%2C%22enterprise%22%3A1%7D    Chrome
        Wait Until Element Is Visible    xpath=//div[@class="ag-body-container"]
    

    应该在命令行中产生以下几行:

    Cell value for Name in Row 2: [Emily Braxton]
    Cell value for mobile in Row 3: [+8710 846 6100 158]
    

    【讨论】:

    • 感谢@A。库斯特拉。因为我是这个框架的新手,所以我无法实现你的建议。你能建议我一些步骤或举个例子吗?
    • 您给出的示例显然解释了如何获取提供“列名称”的任何单元格的文本。但是,就我而言,情况有所不同。我不想在函数中提供“列”或“行”编号,因为行数和列数及其位置不固定。即:不确定包含任何标题数据的标签将是子元素。此外,我无法找出任何参考标签,以便我可以获取数据 w.r.t 它的标题。我的要求是:我将提供“标题”名称,它将获取其下的所有数据。
    • 在在线演示中,包含标题值的标签的祖父母包含列的 id。但是,在随附的屏幕截图中,这是缺少的。由于代码示例相似,但某些标签名称不同,我怀疑它可能与演示网址中的版本不同。因为整页不可用,我不确定“计算”标题项目的数量是否会给我一个列的参考。我最好的猜测是要么使用完整的 javascript API 解决方案,要么查看是否有添加更多信息的设置。
    • 如果“计算”标题项目的数量可以为我提供任何参考,我尝试了解决方案。但是,即使这样也行不通,因为所有“标头”的数据在上一节中耦合在一起(如附图所示),并且没有适当的标识符来隔离“标头”特定数据。跨度>
    猜你喜欢
    • 2017-08-15
    • 1970-01-01
    • 2018-01-29
    • 2013-12-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-11
    • 1970-01-01
    相关资源
    最近更新 更多