我即将把我的测试自动化语言从Java改为Ruby(我有新工作,Ruby更适合技术堆栈).
我有很多Java和Webdriver的经验,但可以看到像Watir和Capybara这样的包装器在Ruby中的使用似乎比直接访问Webdriver API更多.
我对使用这样一个库的担忧是性能.我通常尝试将第三方网格(如Saucelabs)集成到我的测试框架中,但已经了解到,对于持续查找元素可能会对性能产生影响,缓存硒网元素对象非常重要.
如果我使用像Capybara这样的库,我是否会失去控制缓存策略的能力?我之前研究过Geb,发现该框架不断重新创建了webelements而不是缓存,并且在改变这种行为方面似乎缺乏灵活性.
我担心这些库可以帮助您避免编写样板代码,但代价是性能有效吗?
ruby selenium-grid capybara watir-webdriver selenium-webdriver
此问题之前已在Java中得到解答(Get chrome的控制台日志)
但是,我正在使用Ruby绑定,并想知道是否提供了类似的功能?
我查看了Ruby源代码,但看不到任何提及或引用LoggingPreferences.
顺便说一句,我正在使用RemoteWebDriver并传入所需的功能对象.据推测,我想在该对象中设置日志记录首选项,但我很难看到哪里.
我正在针对Selenium Grid运行并行自动化测试.
有时,测试失败;
Session [c1d99cc1-c689-4053-b68d-51c3682c13c4] was terminated due to CLIENT_STOPPED_SESSION (org.openqa.grid.common.exception.GridException)
[remote server] org.openqa.grid.internal.ActiveTestSessions(ActiveTestSessions.java):105:in `getExistingSession'
Run Code Online (Sandbox Code Playgroud)
Selenium文档说;
CLIENT_STOPPED_SESSION The session was stopped using an ordinary call to stop/quit on the client. Why are you using it again??
Run Code Online (Sandbox Code Playgroud)
但是,我知道客户端没有尝试停止/退出.我使用并行rspec,所以每个线程实际上是它自己的Ruby实例,所以没有问题测试方.
此外,如果我使用http:// {node_ip}:5556/wd/hub/static/resource/hub.html直接查询节点,我可以看到会话仍处于打开状态.如果已发出退出/停止,则此会话将被删除.
似乎只有Selenium Grid Hub中的会话注册表认为此会话已停止.没有证据表明会话在其他地方被停止.
Grid中是否存在已知问题,其中错误的会话已标记为已停止?