【问题标题】:How do I extract the Selenium Element from a Capybara Element?如何从水豚元素中提取硒元素?
【发布时间】:2013-09-14 14:17:37
【问题描述】:

我对 Java 和 Selenium 比对 Ruby、Capybara 和 SitePrism 更熟悉,所以如果这个问题比较厚,请见谅。

Selenium 有一个非常有用的类来管理 Select 标签,Selenium::WebDriver::Support::Select,可以通过将代表选择的 Selenium 元素 (Selenium::WebDriver::Element) 传递给它来创建它。我想得到一个 Select 对象,这样我就可以使用它方便的方法。

但是,使用 SitePrism 和 Capybara,定义元素的标准方法使我可以访问由 Capybara 的 Element 类 Capybara::Node::Element 建模的选择,我似乎无法找到一种简单的方法来从中提取底层 Selenium 元素水豚元素。

我四处寻找替代方案,发现 Capybara 的 #select 方法,但这对我来说似乎非常有限,因为它看起来迫使您按值选择,并且用于定义页面上的选择的参数非常狭窄。

有没有一种从 SitePrism/Capybara 创建 Selenium Select 的简单方法?还是有更好的方法来完全做到这一点?谢谢!

【问题讨论】:

  • 你能分享一下你正在使用的代码吗?
  • @Babai 好吧,上面链接的 Select 类提供了 #se​​lect_by 方法,它接受 how 和 what 作为参数。这意味着使用 Selenium Select,您可以使用其值、文本或索引来选择一个选项。而且由于您使用的 Select 是从任何元素创建的,因此您可以以任何您喜欢的方式定位所述元素 - 例如,使用 CSS 选择器(我的首选方法)或 XPath。 Capybara 的 #select 方法只允许您按值选择选项,并强制您仅按 id/name/label 识别选择。抱歉,我不确定哪种代码示例在这里有用。
  • 我认为你可以使用标准的 Capybara 方法做你想做的事。例如,您可以使用 page.find(:css, 'option[value="1"]').select_option 通过 css 选择一个选项。

标签: ruby selenium webdriver capybara site-prism


【解决方案1】:

啊,我找到了。 Capybara::Node::Element 一直都是正确的。 #native 方法从驱动程序返回本机元素。然后可以将其传递给 Selenium Select 的初始化方法以成功创建 Select。

【讨论】:

  • 谢谢。我在任何地方都找不到元素类型不正确问题的答案,但在函数调用中使用my_element.native 修复了它。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-02-03
  • 1970-01-01
  • 2021-12-23
  • 1970-01-01
  • 1970-01-01
  • 2019-09-09
相关资源
最近更新 更多