【问题标题】:Ruby Watir radio checkboxRuby Watir 单选框
【发布时间】:2017-09-23 00:46:00
【问题描述】:

我正在尝试使用 .set 在单选控件上设置复选框?选项。它返回 false,但我无法设置复选框。

<div class="">
<input name="radiostorage" id="zrs" value="2" type="radio">
<label for="zrs">Zone-redundant storage (ZRS)</label>
</div>

已经尝试使用label(for: 'zrs').set .click .parent.click .parent.set,也直接尝试点击输入,但没有任何反应,任何线索

TIA

【问题讨论】:

  • 有机会创建一个示例页面吗?使用browser.label(for: 'zrs').clickbrowser.radio(id: 'zrs').click 对我有用。我猜有一些 CSS/JavaScript 会有所作为。
  • 我认为您混淆了两种不同类型的输入控件。 Checkbox 是一个独立的东西,可以设置或取消设置,而不管它周围的其他控件如何。无线电控制类似于过去在汽车中使用的旧按钮无线电,其中有一组选择,但一次只能启用一个,启用一个会导致禁用其他任何启用。如果您尝试将无线电控件作为 watir 中的复选框来处理,那么它肯定会失败,因为它们是不同的控件类型。

标签: ruby checkbox watir


【解决方案1】:

鉴于单选按钮的实现方式,它不会被视为可见。尝试直接设置它会出现异常:

browser.radio(id: 'zrs').set
#=> element located, but timed out after 2 seconds, waiting for #<Watir::Radio: located: true; {:id=>"zrs", :tag_name=>"input", :type=>"radio"}> to be present (Watir::Exception::UnknownObjectException)

您可以单击其关联的标签,而不是直接设置它,这是实际用户会做的:

browser = Watir::Browser.new
browser.goto('https://pricing-calculator.bluekiri.cloud/')
p browser.radio(id: 'zrs').set?
#=> false
browser.label(for: 'zrs').click
p browser.radio(id: 'zrs').set?
#=> true

【讨论】:

  • 谢谢它就像一个魅力,但我很困惑,因为我在 irb 上尝试了这个但没有工作,无论如何,与 irb 或 ruby​​mine 应该没有什么区别,谢谢你的帮助跨度>
【解决方案2】:

怎么样

radio = browser.radio(id: 'zrs')
radio.set?        #=> false
radio.set
radio.set?        #=> true

http://www.rubydoc.info/gems/watir-webdriver/Watir/Radio

【讨论】:

  • input 元素实际上是“radio”类型,所以checkbox 需要是radio
  • 哦,是的,你是对的!我在原帖中提到复选框被误导了。
  • 我考虑编辑原始帖子以引用正确的控件类型,但决定反对它,因为那时他的问题将非常不清楚。此外,如果他感到困惑,其他人也可能会感到困惑。我怀疑使用这些控件的人从未接触过模拟“无线电”控件的硬件变得越来越普遍。控件的名称对他们来说可能没有意义。 (如果是您,请搜索“按钮车载收音机”的图片,这可能有助于您理解)
  • 问题出在定位元素上,如果我在 irb 控制台上尝试 browser.radio(id: 'zrs') 我会定位错误,但如果我尝试使用 .set? is 显示为 false ,所以我在这一点上感到困惑,因为似乎我无法正确找到该元素。即使收音机的 xpath 或输入的 xpath 我已经定位为假。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-07-27
  • 2013-11-15
  • 2016-06-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多