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

selenium不适用于 Cucumber/Capybar (out of the box) - MacOSX

夏华藏
2023-03-14
问题内容

我在尝试获得一个在selenium环境下运行黄瓜的例子时遇到了麻烦。我在跑

  • Rails3
  • Cucumber 0.10.0
  • Capybara 0.4.1.2

阅读https://github.com/jnicklas/capybara上的doco
,看来要在selenium下运行示例,我需要做的只是以下操作:

第1步:使用@javascript为场景添加前缀

@javascript
Scenario: User does x
...

步骤2:配置env.rb,以告知capybara使用哪个驱动程序:

Capybara.javascript_driver = :selenium

当我跑步时:

bundle exec cucumber feature/myfeature.feature

我得到以下内容:

Using the default profile...
F------------F

Failing Scenarios:
cucumber features/myfeature.feature:7 # Scenario: User does x

1 scenario (1 failed)
12 steps (12 skipped)
0m0.012s

没有Firefox窗口。没有。它运行,悬挂和死亡。

因此,要检查Capybara和seleniumwebdriver是否正常工作,我编写了以下代码

require 'capybara'
require 'capybara/dsl'

Capybara.default_driver = :selenium

class Test
   include Capybara
   def dotest
     visit('http://www.stackoverflow.com')
   end
end

Test.new.dotest

并使用以下命令运行它:

bundle exec ruby /tmp/test.rb

这样可行。Firefox打开窗口,然后浏览到http://codingdict.com/。

那么,如何获取诊断信息以了解Cucumber/Capybara的危害呢?

我正在运行OSX10,Ruby 1.8.7和Firefox 3.6.13。


问题答案:

好吧…我发现了我的问题。Cucumber碗中的某个地方依赖于DatabaseCleaner,当您使用 Selenium 驱动程序时,该依赖关系就会被触发一次。失败声明:

F______________F

告诉我失败是在设置和拆卸中发生的。黄瓜没有报告该异常,即使使用-b,它也无济于事。

我如何发现问题:

  1. 将ruby-debug添加为gem依赖项

  2. 将要求“ html" target="_blank">ruby​​-debug”添加到env.rb

  3. 我在env.rb中添加了以下语句:

Before do
    breakpoint; 0
end
  1. 使用bundle exec运行该功能。调试器启动了。

  2. 输入 cat StandardError,当抛出“StandardError”时,它将告诉调试器断点。StandardError是Cucumber中所有错误的基类。我们要做的是找出错误的出处和原因。

  3. 输入 cont 告诉调试器恢复

将数据库清理程序添加为gem依赖项之后,一切都消失了。Firefox开始启动,一切开始如广告中所述。



 类似资料:
  • 我已经看过并尝试了几乎所有关于这个话题的其他帖子,但运气不好。 我使用的是python 3.6,所以我使用的是以下AMI

  • 我试图捕获并存储svg元素中出现的一些文本,例如 我有一个我正在使用的方法,它适用于其他元素,但Selenium WebElement类方法getText不会为上述svg元素返回任何文本。 下面是上述示例的xpath 我可以使用findElement(By.xpath(myXpath)),但是当我调用. getText()时,它不会返回任何值,也不会抛出任何错误。 我有没有做错什么,或者可能有其他

  • 我正在用eclipse 3.0(Firefox浏览器)运行一个简单的java程序。。但在运行之后,我发现以下错误: 线程“main”java中出现异常。lang.IllegalStateException:驱动程序可执行文件的路径必须由webdriver设置。壁虎。驱动系统属性; 有人能给我在火狐上运行的变通方法吗?注意:在所有程序运行正常之前,但是在火狐升级后,会出错。

  • 我最近开始使用空手道。我有一个现有的项目,有步骤与cucumber,现在我正在编写测试使用空手道。由于空手道是建立在cucumber上的,我仍然不能运行我的自定义编写的步骤定义。

  • 拖放操作不适用于selenium 3.8。 下面是该元素的JS代码 这就是我尝试过的。但这只是选择元素。保持和放弃是不会发生的。 我也试过这个。 也尝试过机器人。每次我只能看到源元素和目标元素都被选中。但不是被拖拽掉的。 还尝试了dragAndDrop ActionsChain。那也没用。

  • 我编写了以下代码来禁用ChromePDF查看器,以便在Chrome打开链接时,PDF文件可以在C:\下载文件夹中自动下载。 不幸的是,我相信PDF查看器没有被正确禁用。以下是我打开PDF url时使用此代码得到的结果: 有没有其他解决方案可以在Chrome中自动下载文件?