gpt4 book ai didi

ruby-on-rails - 为什么我的 Capybara/Poltergeist 测试无法从 jQuery 自动完成字段中进行选择?

转载 作者:行者123 更新时间:2023-12-02 02:58:54 24 4
gpt4 key购买 nike

<小时/>

更新:经过我自己的大量艰苦工作,我已经解决了这个问题。我很高兴能为任何需要这方面帮助的人提供资源。这是我的 working setup. 的要点

<小时/>

我已经尝试了谷歌和SO能找到的所有解决方案。以下是我尝试过的一些不同的方法:

page.execute_script %Q{$('#{selector}').val('#{value}').trigger('keydown')}

fill_in field, with: options[:with]
page.execute_script %Q{ $('##{field}').trigger('focus') }
page.execute_script %Q{ $('##{field}').trigger('keydown') }

这就是失败的原因:

page.should have_selector('ul.ui-autocomplete li.ui-menu-item a')

但是当我在 Firebug 中查看它并在浏览器中测试它时,它肯定就在那里。

以下是所有详细信息,包括对上述内容的重述。请记住,自动完成字段在浏览器中运行良好。

listing_integration_spec.rb

require "spec_helper"

describe "Listing Integration" do

let!(:user) { login_user }

it "lets a user add information listing", js: true do
listing = create(:listing, user: user)
click_link('Additional Information')
click_link('Create')
fill_autocomplete('listings_search', with: listing.item_id)
end

end

spec/support/feature_helper.rb

def fill_autocomplete(field, options = {})
fill_in field, with: options[:with]
page.execute_script %Q{ $('##{field}').trigger('focus') }
page.execute_script %Q{ $('##{field}').trigger('keydown') }
selector = %Q{ul.ui-autocomplete li.ui-menu-item a:contains('#{options[:with]}')}
page.should have_selector('ul.ui-autocomplete li.ui-menu-item a')
page.execute_script %Q{ $("##{selector}").trigger('mouseenter').click() }
end

View 模板中的 ERB

<%= simple_fields_for :listings  do |f| %>
<%= f.input :search, label: "Search by Listing", required: true %>
<% end %>

和 Coffeescript:

$("#listings_search").autocomplete
source: (request, response) ->
options =
term: request.term
$.get "/search_listings", options, (data) ->
if data.length == 0
alert "No listings found."
response data
minLength: 2
select: (event, ui) ->
add_listing_hash =
type: "GET"
url: "/add_listing"
data: { id: ui.item.id }
success: () ->
$.ajax(add_listing_hash)

最佳答案

JS 驱动程序通常很无聊,它们很慢,而且没有一个能够覆盖 100% 的功能,而且它们通常很古怪且难以调试,但我相信您现在已经明白了这一点.

我在rails 3.2、minitest和poltergeist 1.3.0(一个ajaxed下拉菜单)上有类似的代码,但它会无缘无故地定期中断(有人可能会说它有一个poltergeist?我已经求助于到目前为止,在 selenium 和 poltergeist 之间切换了几次测试),不知道为什么自动完成器对你不起作用,但感觉像是一个错误,

将问题提交至https://github.com/jonleighton/poltergeist (你已经有了?https://github.com/jonleighton/poltergeist/issues/439),尝试更改为selenium或webkit,看看它是否有效,如果它能让你摆脱困境,你可以在这个测试中使用不同的驱动程序(它比在小部件上浪费几天的工作要好)有效)。

关于ruby-on-rails - 为什么我的 Capybara/Poltergeist 测试无法从 jQuery 自动完成字段中进行选择?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20830194/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com