【问题标题】:Selenium checkbox data driven - Checkbox has only target but no valueSelenium 复选框数据驱动 - 复选框只有目标但没有价值
【发布时间】:2016-08-28 11:50:44
【问题描述】:

我在使用 Selenium IDE 参数化(数据驱动)复选框时遇到了困难。当我使用 Selenium 记录选择复选框时,我得到以下操作:

<tr>
<td>click</td>
<td>id=_ctl0_MainContentPlaceHolder_UseCaseBesturing__ctl1_dgOndersteundeChannels__ctl2_chkbxChannel</td>
<td></td>

为了参数化这个动作并指向我的测试数据 (XML) 文件,我需要一个可以设置为变量的值。但是在这个动作中没有任何价值,只有一个目标,即 ID。

任何想法如何参数化此操作或如何使用值而不是仅使用目标 (ID) 来检查复选框?

附:通过将“${Parametername}”放入 Selenium 中的值字段以执行操作,文本字段可以正常工作。然后,Parametername 将成为我的测试数据文件中的列名。

复选框的HTML代码:

<table class="detailgrid" cellspacing="0" border="0" id="_ctl0_MainContentPlaceHolder_UseCaseBesturing__ctl1_dgOndersteundeChannels" style="border-style:None;border-collapse:collapse;">
    <tbody><tr>
        <td style="width:20px;">
                            <span disabled="disabled"><input id="_ctl0_MainContentPlaceHolder_UseCaseBesturing__ctl1_dgOndersteundeChannels__ctl2_chkbxChannel" type="checkbox" name="_ctl0:MainContentPlaceHolder:UseCaseBesturing:_ctl1:dgOndersteundeChannels:_ctl2:chkbxChannel" checked="checked" disabled="disabled"></span>
                        </td><td>
                            <span id="_ctl0_MainContentPlaceHolder_UseCaseBesturing__ctl1_dgOndersteundeChannels__ctl2_lblChannelNaam">POS</span>
                        </td>
    </tr><tr>
        <td style="width:20px;">
                            <input id="_ctl0_MainContentPlaceHolder_UseCaseBesturing__ctl1_dgOndersteundeChannels__ctl3_chkbxChannel" type="checkbox" name="_ctl0:MainContentPlaceHolder:UseCaseBesturing:_ctl1:dgOndersteundeChannels:_ctl3:chkbxChannel">
                        </td><td>
                            <span id="_ctl0_MainContentPlaceHolder_UseCaseBesturing__ctl1_dgOndersteundeChannels__ctl3_lblChannelNaam">eCommerce</span>
                        </td>
    </tr><tr>
        <td>
                            <br>
                            <span type="checkbox"><input id="_ctl0_MainContentPlaceHolder_UseCaseBesturing__ctl1_dgOndersteundeChannels__ctl4_chkalles1" type="checkbox" name="_ctl0:MainContentPlaceHolder:UseCaseBesturing:_ctl1:dgOndersteundeChannels:_ctl4:chkalles1" onclick="CheckAll('chkbxChannel', this.checked);"></span>
                        </td><td>
                            <br>
                            Alles Aan
                        </td>
    </tr>
</tbody></table>

【问题讨论】:

  • 考虑使用 XPath。
  • 我试过 xpath=//td/span[text()='POS'] 但它不起作用。它不会在 Selenium 中给出任何错误,但它只是不检查任何复选框。
  • 我把复选框区域的整个 html 代码放在了这里,也许这有助于了解如何完成这项工作。有 3 个可能的复选框(POS、电子商务、Alles aan)。我想在 selenium 中创建这个变量,这样我就可以使用我的测试数据来定义应该选中哪个复选框。
  • 发布您的代码。请记住,span 不是复选框,无论它在浏览器中是什么样子。您是否尝试过使用click()。你还尝试了什么?

标签: selenium checkbox


【解决方案1】:

仍然使用单击,但使用 xpath 更改查找目标的方式。

看起来像这样:

目标:

xpath=//td/span[text()='POS']

希望这会有所帮助!

【讨论】:

    【解决方案2】:

    在完成问题后,我尝试在 Selenium IDE 中的测试步骤中使用 Target 的参数(因为经过各种尝试后无法参数化 Action(Command))。

    要选中一个复选框,Xpath 应该指向输入标签,并且可以使用click 命令进行检查。

    IMO,根据 HTML,用于检查与 eCommerce 对应的复选框的正确 Xpath 应该是:

    //span[text()='eCommerce']/ancestor::td/preceding-sibling::td/input

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-05
      • 2012-10-23
      • 1970-01-01
      • 2018-09-10
      • 2014-06-20
      • 1970-01-01
      相关资源
      最近更新 更多