【发布时间】:2014-04-29 08:57:59
【问题描述】:
我正在尝试使用 capybara(ruby 绑定)从没有 id 或唯一类的下拉列表中选择一个项目,但我似乎无法这样做。
有问题的选择框如下所示:
<select data-bind="options: environments, optionsText: 'name', value: selectedEnvironment, optionsCaption: 'Choose...'" class="form-control">
尝试做一个:
select("option",:from "#panel > div.panel-body > form > div:nth-child(1) > select")
不起作用,但我可以使用
找到选择字段page.find("#panel > div.panel-body > form > div:nth-child(1) > select")
文档说 select 方法需要选择框的 id、名称或标签,但肯定有一种方法可以从下拉列表中选择比这更具体的内容。除了 select() 之外,我还可以使用另一种方法,还是必须重新使用纯硒?
【问题讨论】:
-
如果您在测试某些应用程序的上下文中执行此操作并且您不知道要选择的项目的名称或标签,您可能应该重新考虑您的测试。如果那不是测试套件,为什么不使用 selenium。最后 Capybara 的自述文件声明:“Capybara 帮助您测试 Web 应用程序......”
-
我在测试某些应用程序的情况下这样做,但同时,这不是我正在测试的应用程序。为了伪造登录到正确的环境,我需要使用第三方创建的工具。到目前为止,我已经在这个工具的旧版本上创建了一个自动化版本,但我现在想更新它以在新版本上运行,这样我们就不需要托管这个工具的 2 个版本。在旧版本中,这些选择字段有 ID,但现在没有。
-
如果你想从浏览器的角度测试这个特定的登录步骤,那么坚持使用 selenium。否则,我会尝试跳过此步骤,并将我的应用程序置于成功登录状态,而无需与第三方设置机架会话或您用于存储登录结果的任何其他内容进行任何通信。
-
感谢您的反馈,但您知道我是否可以在相同的测试中同时使用水豚和纯硒而不会产生任何冲突或副作用?另外,您能否更具体地说明一下为什么这会阻止我使用 capybara 以及您所说的“重新考虑您的测试”是什么意思?
-
您必须设法深入研究 Capybara 的 Selenium 驱动程序实例。我会从here 开始我的研究,从来没有这样做过,所以无法说出任何冲突和副作用。
标签: html ruby selenium capybara