Ruby 如何使用capybara设置量程值?

Ruby 如何使用capybara设置量程值?,ruby,capybara,Ruby,Capybara,有人知道如何使用水豚来设置span标记的值吗 我尝试使用element.set或element.send\u键,它们只选择了目标元素,没有修改以前的值 <div data-offset-key="bbpvo-0-0" class="_1mf _1mj"><span data-offset-key="bbpvo-0-0"><span data-text="true">aa</span></span></div> aa HT

有人知道如何使用水豚来设置span标记的值吗

我尝试使用
element.set
element.send\u键
,它们只选择了目标元素,没有修改以前的值

<div data-offset-key="bbpvo-0-0" class="_1mf _1mj"><span data-offset-key="bbpvo-0-0"><span data-text="true">aa</span></span></div>
aa

HTML代码段在上面,我想将aa设置为bb

水豚是为了模拟用户而设计的,除非有某种javascript小部件连接到span,否则用户无法编辑span。如果有一个JS小部件连接到span,则需要执行用户为编辑span而执行的任何操作。因此,您说用户必须单击span,然后键入span-如果是这样,那么您可以尝试以下操作

span = find('span[data-text="true"]')
span.click
span.send_keys("new content", :enter)  # if enter is needed to end the editing

这可能会起作用-虽然我想在单击元素后,该元素实际上会被输入或其他内容替换,但在这种情况下,您需要确定这些元素是什么(使用浏览器检查器),然后查找并使用该元素上的send_键或set来设置span value中的文本,jquery可以与capybara一起使用,如下所示:

page.execute_script("$("<span css selector>").text("testing")");
page.execute_脚本(“$”).text(“测试”);

page.execute_脚本(“$”).html(“testing1233”);

umm——一个项目必须有一个id才能与之交互,这是没有限制的——用户必须执行哪些操作才能编辑您试图编辑的内容——即——用户必须单击数据文本为true的范围,然后键入?还是他们必须先点击其他东西?一旦你知道了这一点,你就可以让水豚复制这些动作——当它们点击跨度时(如果用户必须这么做的话),它会被其他元素替换吗?thanks@TomWalpole,但这完全是facebook的页面,是的,我们可以使用js/jquery执行编辑操作,但不幸的是,似乎我们只能在有一个id连接到该跨度时使用js,但在这里我们没有它。当我尝试这样做时,它抛出了错误:2.1.6:005>page.execute\u脚本($(\“{find(:css,'span[data text=“true”]'))}\”).html('New text');)Selenium::WebDriver::Error::JavascriptError:您能告诉我如何使用js来更改span文本吗?您试图调用的$来自jQuery,但facebooks页面不加载jQuery——要通过js执行此操作,您只需要使用基本的DOM方法
document.querySelector('span[data text=“true”]”)。innerHTML=“New text”或类似的东西-显然,您需要确定用于获取所需元素的选择器的范围-或者,正如我前面所说的。定义用户必须执行的操作,然后使用capybaras API复制这些操作。用户所做的是单击该范围,然后键入其他内容。用户首先需要点击编辑帖子按钮,我已经用水豚复制了这个动作。但在这里,我不知道当元素有一个span标记时如何复制键入字符操作。通常的方法不起作用(查找(:css,'span[data text=“true”]”)。设置“update_info”),在我键入此项后,页面只选择了前面的字符,但没有更改它们,不知道为什么,所以我假设它与span有关吗?如果是输入或文本区域,我没有遇到这个问题。啊,facebooks页面没有加载jQuery,很高兴知道这一点,谢谢。当我键入document.querySelector('span[data text=“true”]”)时。innerHTML=“New text”;在irb模式下,它不会返回任何错误消息,但facebook页面上的消息实际上没有被更改。有线索吗?
page.execute_script("$("<span css selector>").html("testing <b>1 2 3</b>")");