【问题标题】:Unable to click on element in Capybara无法单击 Capybara 中的元素
【发布时间】:2016-02-10 18:12:26
【问题描述】:

问题:无法点击名为“BT_SEARCH”的元素

<tr>
    <td ...>
        <input type="submit" name="BT_SEARCH" value="Hae" onclick="document.forms['DForm'].elements['LPAGE'].value=1">
    </td>
</tr>
  1. click 'Hae' 返回:#Object: 的未定义方法 `click'...

  2. click_button 'Hae' 返回:找不到按钮“Hae”...

  3. click_link 'Hae' 返回:找不到链接“Hae”...

  4. find(:xpath, "//input[@name='BT_SEARCH']").click 似乎没有找到该元素。

我无法修改源代码,并且没有可用的 id 或 class 标签。此外,该页面使用 ASP,我认为这是导致问题的原因。

【问题讨论】:

    标签: selenium capybara


    【解决方案1】:

    您可以尝试以下提到的方法来点击元素:

    1. find("input[name=\"BT_SEARCH\"]").click
    2. page.execute_script("$('input[name=\"BT_SEARCH\"]').trigger('click')")

    希望这会有所帮助:)

    【讨论】:

      【解决方案2】:

      经历你的尝试 -

      1. #click 仅适用于从 find 返回的元素,因此不在元素上调用它永远不会起作用

      2. #click_button 单击按钮元素并输入类型为提交、重置、图像或按钮的元素。它会将所有这些与 id 或 value 匹配-因此,鉴于您的示例,这应该有效

      3. #click_link 点击链接 - 输入元素不是链接,因此应该失败

      4. 假设 xpath 与元素匹配(它似乎这样做),这应该可以工作

      因此,如果页面符合指定,您的尝试 #2 和 #4 应该都有效。您没有给出#4 的确切错误,但由于#2 给了您“无法找到...”错误,我假设#4 也是如此。在这种情况下,有两种可能的可能性—— 1. 元素实际上不在页面上 - 如果元素应该由 JS 添加到页面,请确保没有阻止添加元素的 JS 错误。 2. 元素在页面上不可见 - 在尝试单击之前执行任何必要的用户操作以使输入可见

      【讨论】:

        【解决方案3】:

        问题在于元素在 iframe 中。

        within_frame 解决了这个问题:

        within_frame (frame_id) do
          click "Hae"
        end
        

        令人困惑的是 click 可以找到没有 within_frame 的元素(但它不可点击),而 click_onfind 不能。

        【讨论】:

          猜你喜欢
          • 2017-09-09
          • 1970-01-01
          • 1970-01-01
          • 2021-12-23
          • 2018-11-21
          • 2020-10-10
          • 1970-01-01
          • 2015-10-07
          • 1970-01-01
          相关资源
          最近更新 更多