无法点击Capybara中的元素

时间:2016-02-09 10:22:41

标签: selenium capybara

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

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

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

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

  4. find(:xpath,“// input [@ name ='BT_SEARCH']”)。点击似乎找不到元素。

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

3 个答案:

答案 0 :(得分:0)

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

  1. find("input[name=\"BT_SEARCH\"]").click
  2. page.execute_script("$('input[name=\"BT_SEARCH\"]').trigger('click')")
  3. 希望这有助于:)

答案 1 :(得分:0)

继续尝试 -

  1. #click仅适用于从查找返回的元素,因此调用它不会在元素上运行

  2. #click_button点击按钮元素和输入元素,类型为提交,重置,图片或按钮。它会匹配所有那些反对id或值的东西 - 所以给你的例子这应该有效

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

  4. 假设xpath匹配元素(它似乎要做),这应该有效

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

答案 2 :(得分:0)

问题是该元素位于iframe内。

within_frame 解决了这个问题:

within_frame (frame_id) do
  click "Hae"
end

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

相关问题