Tag: selenium

Rails3 Google Maps使用selenium进行测试

我正在尝试使用Rails3测试谷歌地图应用程序。 我正在使用带有水豚和selenium的黄瓜进行JavaScript测试。 我有一张地图,我等待加载谷歌地图,然后发送一个ajax请求到我的服务器,在那里我得到我插入地图的位置。 我想知道是否可以使用selenium等到加载谷歌地图,完成对我的服务器的ajax调用并将标记放在地图内。 另一个问题是,如何在谷歌地图中选择此标记。 有选择器吗? 或者我应该走另一条路,并使用像Jasmine这样的JS测试框架来测试我的类是否已加载等等。 我对Jasmine没有任何经验,所以可以测试谷歌地图吗? 也许有人知道解决方案,或提示是否可行,或解决方法或……;) [更新1] 我已经找到了如何在谷歌地图中选择标记。 如果你看看googles selenium测试你可以看看他们在做什么。 例如,选择标记: waitForElementPresent xpath=//img[contains(@src,’marker’)] 但接下来是下一个问题。 如何选择特定标记? 是否有一种方法可以在javascript google maps API中为其分配ID,以便我可以使用#marker_1 , #marker_2 …? 另一个奇怪的事情是,我的黄瓜步骤定义中没有像wait_for_element或wait_for_condition这样的函数。 谷歌selenium测试是否使用自己的函数,如waitForElementPresent ? 或者这个标准的seleniumfunction是什么? 我发现了很多post,他们总是使用类似的东西 selenium.wait_for_condition selenium.wait_for_element or @selenium.wait_for_condition … 在我的步骤定义中, selenium和@selenium var a nil。 我该如何访问这些方法? 我也发现了这篇文章 ,但它是从08年10月开始的,所以我认为必须有一个更好的解决方案(顺便说一句。这个解决方案一见钟情)。 就像在这个页面上一样,他们概述了一些如何等待条件或元素的selenium方法。 这仍然存在吗? 我该如何使用这个function? [更新2] 该死的,我发现,我上面提到的selenium测试是针对谷歌地图的V2,而不是针对V3。 我试过了 wait_until { page.has_xpath?(“//img[contains(@src,’marker’)]”) } 但它不起作用。 标记在地图上可见,但是我收到超时错误,因为找不到此XPath选择器。 […]

将自定义标题传递给Capybara的Selenium

我们使用自定义标头来validation我们的网络应用。 http代理服务拦截请求,确认用户的真实性,然后将自定义标头注入请求。 为了测试应用程序,我需要在请求到达ApplicationController方法之前将这些标头写入请求。 现在,当前的hack适用于我所有的非JavaScript测试: # in hooks.rb Before do require ‘capybara/driver/rack_test_driver’ module Capybara::Driver class Authentic “foo”) end end end Capybara.register_driver(:authentic) do |app| Capybara::Driver::Authentic.new(app) end Capybara.default_driver = :authentic end #in the controller class ApplicationController File.join(Rails.root, “public”, “403.html”) unless request.env.keys.include?(‘foo’) end end 任何我不想被认证的请求,我可以使用标签来使用常规的rack_test驱动程序: Feature: Authentication Valid users should be authenticated. Invalid users should be redirected to the […]

如何在测试套件中进行下一次测试之前关闭所有窗口?

[7] pry(#)> page.execute_script “window.close()” Selenium::WebDriver::Error::NoSuchWindowError: Script execution failed. Script: window.close(); The window could not be found [8] pry(#)> page.driver.browser.window_handles => [“f1-2”] 我打开了一个带有两个选项卡的浏览器,上面的命令关闭了一个,但最后一个选项卡从未关闭。 它是开放的,但是当我尝试运行page.execute_script “window.close()”它会给出上述错误。 page.driver.browser.window_handles.each do |handle| page.driver.browser.switch_to.window(handle) page.execute_script “window.close()” end 上面的代码在某个时候对我有用,但不再起作用了。 它给出了同样的错误。 更新: 我用的时候 page.driver.browser.window_handles.each do |handle| page.driver.browser.switch_to.window(handle) page.driver.browser.close end 它给出以下错误Selenium::WebDriver::Error::UnknownError: ‘auto_id’不引用打开的选项卡

与黄瓜轨道的数据库清洁交易

我正在为注册表单编写一个场景。 @abc @selenium Scenario:Non registered user signs up Given I am on the sign-up page When I fill in the following: |first_name|Anidhya| |last_name|Ahuja| |email|anidhya@gmail.com| |password|123456| And I press “submit” Then I should see “Registration complete” 我希望在此方案之后使用数据库清理程序回滚测试数据库,以便我可以一次又一次地使用此方案。 对于我在env.rb文件中的内容,我写道: begin require ‘database_cleaner’ require ‘database_cleaner/cucumber’ DatabaseCleaner.strategy = :transaction Cucumber::Rails::World.use_transactional_fixtures = true rescue NameError raise “You need to add […]

在rails上的ruby中运行测试时有一个默认端口

我试图用rake spec我运行我的测试我使用rspec,capybara与selenium作为webdriver。 问题是我什么时候尝试运行规范它每次都在不同的端口启动测试环境。 我不希望这发生,因为它弄乱了我的Facebook登录。 我怎样才能让环境每次都在同一个端口启动。 请帮忙!

使用RSPEC进行测试时突然出现无法解释的活动记录连接超时

这是我几乎一无所知的地方,所以请提前道歉。 我有一套超过800个rspec测试。 在运行整个集合或仅仅是特定的测试文件时突然而且莫名其妙地,在这些之后(例如20个左右,虽然它们的数字从不完全相同),每个单独的测试都会以相同的错误开始失败: Failure/Error: Unable to find matching line from backtrace ActiveRecord::ConnectionTimeoutError: could not obtain a database connection within 5.000 seconds (waited 5.000 seconds) 在典型的运行中,我会在20次左右的请求测试后开始收到这些错误,其余的780+测试都会因上述完全相同的错误而失败。 我已经尝试回到之前测试完美的先前git提交和分支。 没有运气 – 仍有780多个失败。 还完全删除了重新创建的测试数据库。 也没有运气。 我已经阅读了许多关于连接池等的线程,但我恐怕我不知道如何诊断甚至发生了什么。 以下是我现在所知道的事实: 使用Postgresql 据我所知,开发环境运行良好 在一切工作正常和现在之间,我没有对我所知道的环境进行任何更改/升级。 甚至没有任何数据库迁移。 只需更改模型,视图和控制器代码。 正如我所提到的,回到之前的提交并没有解决任何问题。 config.use_transactional_fixtures = false因为我正在通过Selenium测试ajaxfunction。 但是,无论Selenium是否用于特定的测试集,测试都会失败。 即使我只运行不使用Selenium的测试,在20次左右的测试后仍然会出现故障。 我正在使用具有以下配置的Database Cleaner而不是事务夹具: config.before(:suite) do DatabaseCleaner.clean_with(:truncation) end config.before(:each) do DatabaseCleaner.strategy = :transaction […]

我可以使用Selenium IDE生成Cucumber / Capybara步骤吗?

我已经安装了Selenium IDE(Firefox插件)和Capybara(gem)。 我现在正在我的rails应用程序中从Cucumber / Capybara步骤(@javascript)驾驶Selenium。 问题是: 我可以将Selenium IDE步骤导出为Cucumber / Capybara步骤吗? 在Selenium IDE选项>格式中我只能看到Ruby(Test :: Unit)和RSpec,但是拥有Capybara格式也很棒 。 谢谢。

selenium / capybara – 无法加载Firefox个人资料

当我使用selenium运行测试时,浏览器会反复弹出声明无法找到firefox配置文件。 我准备了一个与selenium一起使用的Firefox配置文件我只是不确定如何告诉selenium该配置文件所在的位置。 如何告诉Selenium使用哪个firefox配置文件?

如何用capybara和selenium填充tinymce-rails编辑器?

我使用水豚测试tinymceforms有困难。 我正在使用tinymce-rails并且在我的表单中有7个编辑器。 我也使用asciimath插件与tinymce。 一切正常,但我无法编写测试来填写tinymce编辑器。 以下是我的步骤定义代码的外观,与此处描述的内容非常相似: within_frame(“content_ifr”) do editor = page.find_by_id(‘tinymce’) editor.native.send_keys ‘test’ end 问题是当我运行以下内容时: editor.native.clear # works, clear the editor area, I’m testing this with pry editor.native.send_keys :tab # works, moves focus to next input editor.native.send_keys ‘test’ # returns “”, nothing happens, nothing in editor 如此clear , send_keys :tab按预期工作。 但我不能发送任何字符串。 send_keys函数总是返回空字符串,当我使用send_keys进行测试时没有任何反应。 这里出了什么问题? 以及如何调试/调查问题? 谢谢。

无法连接到chromedriver

我使用capybara和selenium测试我的rails项目。 当我执行测试脚本时,它有这样的错误 Selenium::WebDriver::Error::WebDriverError: Could not find Firefox binary (os=macosx). Make sure Firefox is installed or set the path manually with Selenium::WebDriver::Firefox::Binary.path= 我谷歌如何使用谷歌浏览器作为测试浏览器而不是Firefox 但它发生其他错误喜欢 Selenium::WebDriver::Error::WebDriverError: unable to connect to chromedriver http://127.0.0.1:9515