Tag: selenium

Capybara :: ElementNotFound仅适用于特拉维斯的所有规格

我正在使用selenium,capybara和rspec进行测试,我注意到所有测试都在本地传递,但是在travis上,所有测试都失败了,每个规范都出现此错误。 Capybara::ElementNotFound: 我不确定这里有什么问题,这是.travis.yml上的specs runner script: – xvfb-run bundle exec rspec spec/features/*.rb 对于spec_helper.rb这里是我的配置: RSpec.configure do |config| config.treat_symbols_as_metadata_keys_with_true_values = true config.use_transactional_fixtures = false config.infer_base_class_for_anonymous_controllers = false1 config.filter_run_excluding :broken => true config.render_views Capybara.default_driver = :selenium Capybara.default_selector= :css Capybara.run_server = true Capybara.default_wait_time = 30

在缓存中找不到元素 – 自从在Selenium Ruby Web驱动程序中查找以来页面可能已更改?

我正在尝试编写一个爬虫程序,它从加载的页面中抓取所有链接,并将所有请求和响应标题以及响应正文记录在某些文件中,例如XML或txt。 我在新浏览器窗口中打开第一个加载页面的所有链接,所以我不会收到此错误: Element not found in the cache – perhaps the page has changed since it was looked up 我想知道什么是另一种方式来发出请求并从所有链接接收响应,然后找到输入元素并从所有打开的窗口提交按钮。 我可以在某种程度上做到这一点,除非打开的窗口在右上角的http://www.testfire.net上有一个常见的站点搜索框。 我想要做的是我想省略这样的常用框,以便我可以使用webdriver的i.send_keys “value”方法填充其他输入值并且不会出现此错误错误:在缓存中找不到元素 – 也许页面有因为它被抬起而改变了。 检测和区分每个打开的窗口的输入标记的方法是什么,以便在网站的大多数页面上出现的常见输入标记中不会重复填充值。 我的代码如下: require ‘rubygems’ require ‘selenium-webdriver’ require ‘timeout’ class Clicker def open_new_window(url) @driver = Selenium::WebDriver.for :firefox @url = @driver.get ” http://test.acunetix.com ” @link = Array.new(@driver.find_elements(:tag_name, “a”)) @windows = Array.new(@driver.window_handles()) @link.each […]

如何使用Ruby中的Safari技术预览设置Capybara

我无法使用Capybara和Selenium与Safari技术预览(STP)建立会话。 Capybara甚至不打开浏览器窗口。 我升级到Ruby 2.3.0 Capybara 2.14.2 Selenium 3.4.0 我从https://developer.apple.com/safari/download/下载并安装了STP 我想使用以下代码: Capybara.register_driver :selenium do |app| Capybara::Selenium::Driver.new( app, browser: :safari ) end Capybara.default_driver = :selenium 如何初始化Capybara以使用已实施W3C自动化标准的STP safaridriver?

Selenium Webdriver仅截取视口的屏幕截图

我只需要当前视口的截图,特别是尊重滚动位置。 基本上是当前Chrome驱动程序的function。 从我所看到的,它似乎应该是完全可能的,但由于某种原因截图命令总是努力采取完整的文档截图。 事实上,IE驱动程序需要多个视口镜头,然后将它们拼接在一起。 我正在使用Ruby webdriver,我无论如何都看不到只是视口的截图。 可能吗?

如何使用auth将代理添加到Watir上的ChromeDriver

我在Ruby上使用Watir,它使用Selenium作为其底层框架。 我正在使用ChromeDriver,为了设置代理,我真的这样做了: b = Watir::Browser.new :chrome, :switches => [“–proxy-server=11.1.1.11:3011”] 有时,代理附带用户,密码validation如下: 11.1.1.11:3011:3011:user:pass 但是当我尝试将该字符串放入–proxy-server我收到一个错误。 如何配置ChromeDriver以使用身份validation? 我尝试过其他SO答案中经常提出的格式,即: http://user:pass@11.1.1.11:3011 但那没用。 尝试没有http部分,也没有工作。

如何使用Selenium在Firefox中处理安全警报

我正在使用带有ruby的selenium-webdriver来编写自动化测试。 Chrome和chromedriver二进制文件工作非常好,但是我遇到了与浏览器配置相关的Firefox问题,这使我的测试失败,而他们通过了Chrome。 在Firefox中执行测试时,有时我会收到有关此消息的警报: 虽然此页面已加密,但您输入的信息将通过未加密的连接发送,并且可以由第三方轻松读取 它打破了执行。 有没有办法在最近的Firefox版本(10+)中禁用此警告或使用Selenium处理此行为?

如何在不删除`test`数据库数据的情况下测试JavaScripts?

我使用Ruby on Rails 3.2.2,cucumber-rails-1.3.0,rspec-rails-2.8.1和capybara-1.1.2。 我想使用Selenium来测试JavaScripts,但是每次在终端窗口中运行cucumber命令行时都不要删除test数据库数据。 也就是说,如果我声明如下function: Feature: … @javascript Scenario: … JavaScript也经过了预期的测试。 但是,在测试运行后, test数据库数据将被删除,我必须再次为该数据库播种,以便正确运行新测试。 我阅读了官方文档和ROOT_APP/features/support/env.rb文件中的文本(似乎我安装了所有必需的Rubygem – 请参阅下面有关我正在使用的Gemfile的更多信息)但我没有了解如何避免删除数据库数据以及如何配置Cucumber和Capybara gems以便正确使用Selenium。 我该怎么办? 注意I :我想制作上述内容,因为我想在“测试”/“运行”场景时拥有相同的test数据库数据 。 注意二 :为了在test数据库中播种数据(我的应用程序需要该数据工作),我在RAILS_ROOT_PATH/lib/tasks/cucumber.rake文件中添加以下代码,然后运行rake db:test:prepare命令终端窗口中的行。 namespace :db do namespace :test do task :prepare => :environment do Rake::Task[“db:seed”].invoke end end end 在ROOT_APP/features/support/env.rb文件中,我试图取消注释以下两个代码块( BTW :我从未更改由cucumber-rails gem自动生成的原始文件,因此它是默认的),但在运行测试后,它仍然删除test数据库数据。 # Before(‘@no-txn,@selenium,@culerity,@celerity,@javascript’) do # # { :except => [:widgets] } may […]

Ruby – 无法在45秒内绑定到锁定端口7054(Selenium :: WebDriver :: Error :: WebDriverError)

我最近在尝试运行任何Cucumber测试时都开始看到此错误消息。 我做了一些研究,发现了一些其他类似的错误实例,但大多数是与浏览器相关的问题。 我在此输出中看不到任何特定于浏览器的错误消息: unable to bind to locking port 7054 within 45 seconds (Selenium::WebDriver::Error::WebDriverError) 我看到这里发布的另一个问题得到了回答( 一个seleniumwebdriver例外 ),但是这个解决方案对我不起作用。 运行“ lsof -i TCP:7054 ”不会产生任何输出。 万一有人建议这样做,我已经多次重新启动我的机器并擦掉我的gem并重新运行“捆绑”。 以下是我正在使用的相关gem: capybara (0.4.1.2) cucumber (0.10.7) cucumber-rails (0.4.1) fuubar-cucumber (0.0.9) selenium-webdriver (0.2.0) 可以肯定的是,我也尝试使用Firefox 3.6,4.0和5.0运行这些测试。 每次都是相同的消息。 不要成为阴谋理论家或任何东西,但在手动退出运行我的测试套件并对Cucumber启动的所有活动Firefox进程运行时,一切正常。 我在测试套件中同时运行了大约9个Firefox实例。 我不确定这是否会导致某些事情发生,从而产生我现在从运行Cucumber测试中看到的结果。 有没有人有解决这个问题的建议?

检查Ruby上的浏览器控制台输出

如何检查浏览器控制台是否有错误? 例如,我已经使用Selenium引发了浏览器(firefox的chrome),并且我已经使用Selenium WebDriver完成了一些操作。 之后,我想知道Web控制台中是否有任何错误。

检查元素是否在Selenium / WebDriver(Ruby)中有标签

我有以下HTML代码: Remember me 我想检查session_remember_me字段是否有标签Remember me如何检查?