Ruby 使用Capybara查找标签文本

Ruby 使用Capybara查找标签文本,ruby,selenium-webdriver,capybara,Ruby,Selenium Webdriver,Capybara,使用Capybara查找标签文本 背景:我有一个KBA页面和一组问题和答案,答案是用单选按钮以5种可能的答案的形式给出的。因此,我需要循环浏览每个单选按钮的标签,以匹配yaml文件中的有效答案 HTML: 问题在于上面代码片段中提到的“问题块”。我不知道如何获取每个单选按钮绑定到一个标签/p标签的文本,而是返回所有单选按钮的文本,并对照变量“valid_answers”进行检查,但总是失败 我基本上想要单选按钮.text等于“单选按钮文本1”,因为它是相应的单选按钮。而是单选按钮.text返回:

使用Capybara查找标签文本

背景:我有一个KBA页面和一组问题和答案,答案是用单选按钮以5种可能的答案的形式给出的。因此,我需要循环浏览每个单选按钮的标签,以匹配yaml文件中的有效答案

HTML:

问题在于上面代码片段中提到的“问题块”。我不知道如何获取每个单选按钮绑定到一个标签/p标签的文本,而是返回所有单选按钮的文本,并对照变量“valid_answers”进行检查,但总是失败

我基本上想要
单选按钮.text
等于“单选按钮文本1”,因为它是相应的单选按钮。而是
单选按钮.text
返回:

单选按钮文本1单选按钮文本2单选按钮文本3等


我猜它不应该是
radio.parent.text
,而是其他的东西,我不确定。

看起来你让事情变得比需要的更复杂了-你应该能够做到

answers[i].choose("the text of the radio button you want to select")
如果找不到值,您可以捕获异常并在那里输出警告


注意:Capybara元素中的父元素不是该元素的HTML父元素-它是查找程序在定位给定元素时调用的元素-因此在您的示例中是.answers元素。如果您确实希望访问节点实际的HTML父元素,您可以调用
元素.find(:xpath,…')

这看起来比需要的更复杂-您应该能够做到

answers[i].choose("the text of the radio button you want to select")
如果找不到值,您可以捕获异常并在那里输出警告


注意:Capybara元素中的父元素不是该元素的HTML父元素-它是查找程序在定位给定元素时调用的元素-因此在您的示例中是.answers元素。如果您确实想访问节点实际的HTML父元素,您可以调用
元素。查找(:xpath,…)

Tom,谢谢,您引导我走上了正确的道路,只是稍微更改了您所说的内容:answers[i]。choose(valid_answer[0])Tom谢谢,您引导我走上了正确的道路,只是稍微更改了您所说的内容:answers[i]。choose(有效答案[0])
answers[i].choose("the text of the radio button you want to select")