当前位置: 首页 > 面试题库 >

测试jQuery可选的Capybara或selenium(Ctrl +单击)

史逸春
2023-03-14
问题内容

我正在使用jQuery Selectable管理日历。该功能很好用,仅仅是测试自动化的问题。

我需要从日历网格中选择多个非连续日期。

我尝试了几件事,并不是真的期望它们能工作

date = '2013-05-02'
page.execute_script %{
    var e = jQuery.Event("keydown");
    e.ctrlKey = true; // # Some key code value
    e.keyCode = 17
    $("body").trigger(e);
}
find("td[data-date='#{date}']").click

我为一系列日期执行此操作,但似乎并未考虑ctrl键,因为实际上仅选择了最后选择的日期。


问题答案:

您可以使用selenium-
webdriver的动作构建器。但是,firefoxdriver中似乎存在一个错误,目前阻止该错误运行(可能是问题4863)。

这是使用Chrome的“ jQuery可选”页面的工作示例:

require 'capybara'
require 'capybara/dsl'
include Capybara::DSL

#Use selenium-webdriver with chrome
Capybara.register_driver :selenium do |app|
  Capybara::Selenium::Driver.new(app, :browser => :chrome)
end
Capybara.current_driver = :selenium

#Go to the JQuery Selectable example page
Capybara.app_host = 'http://jqueryui.com/selectable/'
page.visit('')

#The controls are in a frame, so need to switch to it
within_frame 0 do
    #Create a selenium-webdriver action builder
    builder = page.driver.browser.action

    #Hold control key down
    builder.key_down(:control)

    #Click all elements that you want, in this case we click all lis
    #Note that you can retrieve the elements using capybara's
    #  standard methods. When passing them to the builder
    #  make sure to do .native
    elements = page.all('ol#selectable li')
    elements.each do |e|        
        builder.click(e.native)
    end

    #Release control key
    builder.key_up(:control)

    #Do the action setup
    builder.perform
end


 类似资料:
  • 问题内容: 关于如何使用Capybara / Selenium / Rspec 执行javascript测试的例子很多,您可以在其中编写如下测试: 但是,使用 minitest时, 您无法传递第二个参数来指示selenium执行测试。 有没有人对如何做到这一点有任何想法? 问题答案: 嗯,我注意到文档中有几行似乎说以上内容只能在Rspec中完成 但是,如果您使用的是 RSpec或Cucumber

  • 我想测试一个返回可选客户机的方法。 我一直在跟踪这个链接Mockito错误,方法返回可选的

  • 我已经在我的Rails4应用程序中实现了JQuery文件上传。当我从浏览器手动测试文件上传时,文件上传工作正常,但测试失败。 下面是我上传JQuery文件的规范:需要'spec\u helper' 我使用rspec2、水豚2和恶灵来实现这个特性规范。

  • 我试图从一个列表中自动设置多个表单,我打开到他们自己的选项卡。我可以在运行脚本之前准备页面的最简单的方法是将它们全部打开。我打算让selenium运行对表单的更改,然后我希望它在Ctrl+Tab下一个更改中运行。我将使用循环while来设置计数。我目前有它在HTML记录,如果我需要调整到java或我会很乐意这样做。 我试着录下来,但没有。

  • 我有一个Selenium Grid和WebDriver 2.48.2测试运行得太快。大多数时候测试会停止,因为在按下按钮之前没有选择单选按钮。 单选按钮是使用基于JSON文件的JavaScript设置的,以在一个部分中动态创建任意数量的单选按钮。一旦单击继续按钮,该部分将被销毁,并使用新的单选按钮创建新的部分。 我尝试了一种含蓄的等待,但没有成功。 对我来说唯一有效的解决方案是延迟,以便有足够的时