html - 与 Capybara 中深度嵌套的单选按钮交互

标签 html css xpath radio-button capybara

最近,我遇到了一个单选按钮,它似乎嵌套得很深,以至于 Capybara 根本无法与之交互。

HTML 示例:

<div …>
   <div …>
      <div …>
         <ul …>
            <li …>
               <label …>
                 <div …>
                    <input id=”radio1” name=”Section1.Radio1” type=”radio”></input>
                    <label …> </label>  
                 </div>
               </label>
            </li>
         </ul>
      </div>
   </div>
</div>

除此之外还有大约 10 个深度级别,我在点击标签之前省略了这些级别。

我尝试过的

我已经尝试了 capybara 查找器的组合,包括:choose, click_on, find, find_first;所有与各种 xpath 和 css 组合。这些都会导致一般性错误“找不到元素”。我使用的 xpaths 和 css 在 Chrome 和 FF 开发者工具中测试没有问题。 我唯一的突破是使用“全部”查找器。

all(:css, #id_name).first

当我添加“点击”时,这似乎会导致找到一个对象:

all(:css, #id_name).first.click

我在 Capybara 'undefined method `click' for nil:NilClass (NoMethodError)' 中收到错误

也许我应该换个方向。有人有什么想法吗?

最佳答案

你可以使用 capybara 提供的#choose方法。来自docs :

Find a radio button and mark it as checked. The radio button can be found via name, id or label text.

所以在你的例子中:

page.choose('radio1')

关于html - 与 Capybara 中深度嵌套的单选按钮交互,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26768814/

相关文章:

php - PHP和XML根据属性查找节点,以查找另一个属性或该节点的索引

javascript - 满足某些条件后发送电子邮件

javascript - 如何在 highchart 中创建这样的饼图/圆环图?

php - 将自定义搜索表单添加到 wordpress 导航菜单的最佳方法是什么?

python - ElementNotInteractableException : Message: Element is not reachable by keyboard error sending text to input field using Selenium and Python

javascript - Selenium Webdriver xpath 查找元素

javascript - 基于 firebase 数据在 html 上显示 Canvas 时出错

php - 传递 PHP 变量时,Javascript 抛出 TypeError、document.getElementById

html - Css:如何在一行中修复 li

css - 将样式属性分配给多个类的伪类的正确 CSS 语法?