2016-02-16 91 views
-2

有谁知道如何设置一个值来跨越标签使用水豚?如何用水豚设置量程值?

我尝试使用element.setelement.send_keys,他们只选择了目标元素而没有修改以前的值。

<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> 

HTML片段是上面,我想设置AABB

回答

0

水豚旨在模拟用户 - 用户不能编辑跨度,除非附加了某种JavaScript小部件。如果将JS小部件附加到跨度,则需要执行用户为了编辑跨度而执行的任何操作。所以你说,用户必须点击跨度,然后键入跨度 - 如果是这样的话,那么你可以尝试像

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

它可以工作 - 虽然我要去猜测元素实际上得到点击后用输入或其他内容代替,在这种情况下,您需要弄清楚这些元素是什么(使用浏览器检查器),然后找到并使用send_keys或设置该元素

+0

乌姆 - 存在于具有有一个id为你与它交互的项目没有限制 - 究竟用户有什么样的行动来进行编辑你想要的内容编辑 - 即 - 用户必须点击数据文本=真正的跨度,然后键入?还是他们必须先点击其他东西?一旦你知道了那么你就可以让水豚复制这些动作 - 当他们点击跨度时(如果这是用户必须做的)它会被其他元素替换吗? –

+0

谢谢@ Tom Walpole,但这完全是Facebook的页面,是的,我们可以使用js/jquery来执行编辑操作,但不幸的是,似乎我们只有在附加了该跨度的id时才能使用js,但在这里我们没有它。当我尝试,它会抛出错误:2.1.6:005> page.execute_script(“$(\”#{find(:css,'span [data-text =“true”]')} \“)。html ('New Text');“) Selenium :: WebDriver :: Error :: JavascriptError:<![EX [[”试图获取ID为\“%s \”的元素,但它不存在于页面上。 “,”#“]]]> 你能告诉我如何使用js来改变span文本吗? –

+0

你试图调用的$是来自jQuery,但Facebook页面不加载jQuery - 通过JS来完成,你只需要使用基本的DOM方法'document.querySelector('span [data-text =“true” ]')。innerHTML =“新文本”;'或类似的东西 - 显然你需要确定用来获取所需元素的选择器的范围,或者如前所述。定义用户必须执行的操作,然后使用capybaras api –

0

要设置跨度价值,jquery可以与水豚搭配使用,如下图所示:

page.execute_script("$("<span css selector>").text("testing")"); 

page.execute_script("$("<span css selector>").html("testing <b>1 2 3</b>")");