【问题标题】:Not able to select check box for dynamic input ID value无法选择动态输入 ID 值的复选框
【发布时间】:2016-12-26 20:16:44
【问题描述】:

下面是两个复选框的 html,我的意图是选择一个复选框,使用它的标签作为“XERU”或“SYM”。在 Robot Framework 中,关键字 'Checkbox Should Be Selected' 使用 Key 属性; ID 和名称作为它的定位器,但这里的 ID 对于每个标签都是动态的。

所以我需要为选择它的 ID / 名称的复选框设置一个 Xpath,但不要在测试套件中硬编码。

<input id="ctl00_PageBody_chklistVirtualAddressingGroups_5" name="ctl00$PageBody$chklistVirtualAddressingGroups$5" type="checkbox"/>
<label for="ctl00_PageBody_chklistVirtualAddressingGroups_5">XERU</label>
<br/>
<input id="ctl00_PageBody_chklistVirtualAddressingGroups_6" name="ctl00$PageBody$chklistVirtualAddressingGroups$6" type="checkbox"/>
<label for="ctl00_PageBody_chklistVirtualAddressingGroups_6">SYM</label>
<br/>

【问题讨论】:

    标签: checkbox selenium-webdriver robotframework selenium2library


    【解决方案1】:

    你可以试试下面的代码。此代码基于您提供的 HTML。请尝试提供更多信息。

    driver.findElement(By.xpath("//label[contains(text(), 'XERU')]")).click();
    driver.findElement(By.xpath("//label[contains(text(), 'SYM')]")).click();
    

    【讨论】:

    • 我正在使用 Robot 框架执行,您的答案适用于 Selenium @Maninder。
    【解决方案2】:

    我会尝试以下方式:

    Wait Until Keyword Succeeds    4 sec    1 sec    Click Element    xpath=//label[contains(text(), 'XERU')]
    Wait Until Keyword Succeeds    4 sec    1 sec    Click Element    xpath=//label[contains(text(), 'SYM')]
    

    如果失败,您能否向我们提供更多信息,说明问题的原因?

    【讨论】:

    • 这就是说,你为什么不做一个初始阶段简单地找到你需要的元素的ID,然后从那里使用checkbox关键字呢?也许更稳定和可维护
    【解决方案3】:

    使用 xpaths 作为 -

    (//label[text()='XERU']/preceding::input)[last()]
    (//label[text()='SYM']/preceding::input)[last()]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-06-27
      • 2020-08-17
      • 1970-01-01
      • 1970-01-01
      • 2023-03-12
      • 2022-11-02
      • 2017-02-01
      相关资源
      最近更新 更多