首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将多个变量重构成具有参数的一个变量?

如何将多个变量重构成具有参数的一个变量?
EN

Stack Overflow用户
提问于 2021-11-10 05:16:42
回答 2查看 107关注 0票数 0

该网页有一个包含11个复选框的表。

我希望有灵活性,让测试人员只输入1或2或3来选择特定的复选框。

如何仅用ONE variable构建关键字?因此,测试人员不需要输入许多行的元素变量。

要素:

代码语言:javascript
复制
xpath=(//input[@class="ant-checkbox-input"])[1]
xpath=(//input[@class="ant-checkbox-input"])[2]
xpath=(//input[@class="ant-checkbox-input"])[3]

当前脚本:

代码语言:javascript
复制
*** Settings ***
Library    Browser

*** Variables ***
${Checkbox-1}   xpath=(//input[@class="ant-checkbox-input"])[1]
${Checkbox-2}   xpath=(//input[@class="ant-checkbox-input"])[2]
${Checkbox-2}   xpath=(//input[@class="ant-checkbox-input"])[3]

*** Test Cases ***
   Click    ${Checkbox-1}
   Click    ${Checkbox-2}
   Click    ${Checkbox-3}

期望脚本:

代码语言:javascript
复制
    *** Settings ***
    Library    Browser
    
    *** Variables ***
    ${Checkbox-1}   xpath=(//input[@class="ant-checkbox-input"])[1]
    ${Checkbox-2}   xpath=(//input[@class="ant-checkbox-input"])[2]
    ${Checkbox-2}   xpath=(//input[@class="ant-checkbox-input"])[3]
    ${CustomCheckbox}   I don't know how to construct
    *** Test Cases ***
    User select checkbox 1 and 2
      [Arguments]    ${not sure}  
       Click    ${CustomCheckbox}   1     2

表中第一行的外部html

代码语言:javascript
复制
<tr data-row-key="1" class="ant-table-row ant-table-row-level-0">
    <td class="ant-table-cell ant-table-selection-column">
        <label class="ant-checkbox-wrapper">
            <span class="ant-checkbox">
                <input type="checkbox" class="ant-checkbox-input" value="">
                    <span class="ant-checkbox-inner"/>
                </span>
            </label>
        </td>
        <td class="ant-table-cell">1</td>
        <td class="ant-table-cell">101-39s5mb.mp4</td>
    </tr>
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-11-10 05:51:03

关键字实现如下。

代码语言:javascript
复制
*** Variables ***
${checkbox_xpath}    xpath=(//input[@class="ant-checkbox-input"])

*** Test Cases ***
Test
    Log To Console    \nClick 1
    Name That You Want    1
    Log To Console    Click 2 and 3
    Name That You Want    2    3

*** Keywords ***
Name That You Want
    [Arguments]    @{index}
    
    FOR    ${key}    IN    @{index}
        Log To Console    ${checkbox_xpath}\[${key}\]
    END

输出:

代码语言:javascript
复制
==============================================================================
Main
==============================================================================
Test
Click 1
.xpath=(//input[@class="ant-checkbox-input"])[1]
.Click 2 and 3
.xpath=(//input[@class="ant-checkbox-input"])[2]
xpath=(//input[@class="ant-checkbox-input"])[3]
Test                                                                  | PASS |
------------------------------------------------------------------------------
Main                                                                  | PASS |
1 test, 1 passed, 0 failed
==============================================================================
票数 1
EN

Stack Overflow用户

发布于 2021-11-10 06:27:54

您可以使用计算函数来完成这一任务。

代码语言:javascript
复制
*** Settings ***

Library    Browser
Library    SeleniumLibrary

*** Variables ***

${Checkbox}   xpath=(//input[@class='ant-checkbox-input'])[{0}]

*** Test Cases ***
Test
    Click Checkbox    1  3  9

*** Keywords ***
Click Checkbox 
    [Arguments]  @{Values}
    FOR     ${value}    IN    @{Values}
        ${final xpath}    Evaluate    "${Checkbox}".format("${value}")
        Click Element    ${final xpath}
    END

根据您提供的值,最终xpath将具有以下输出

(//input@class=‘ant-复选框-input’)1,(//input@class='ant-checkbox-input')3....(//input@class='ant-checkbox-input')9

或者您可以使用下面的方法

代码语言:javascript
复制
*** Settings ***
Library    Browser
Library    SeleniumLibrary

*** Variables ***

${Checkbox}   xpath=//input[@class='ant-checkbox-input']

*** Test Cases ***

Click Checkbox 

*** Keywords ***

Click Checkbox 
     # If you dont know how many elements it has,then you can get all the elements and click one by one.
     ${list of elements}  Get Webelements  ${Checkbox}
     For    ${element}   in  ${list of elements}
        Click Element    ${element}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69908280

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档