Rspec和Watir;在按钮元素中查找和更改<span>文本

时间:2016-04-27 15:25:28

标签: html rspec automation watir-webdriver

我正在玩rpsec和watir-webdriver,我遇到一个奇怪的问题,我可以点击进入一个按钮,但是我无法与跨越内部的文本交互(或更改) 。
这就是html的样子:

<button class="pure-button toggle-mode button-link edit-text-button-element" data-reactid=".0.1.0.1.1.0.0.0.0" title="Edit">
    <span class="value false" data-reactid=".0.1.0.1.1.0.0.0.0.0">Untitled</span>
    </span>
</button>

现在我的ruby代码看起来像这样:

foo = @browser.button(:class, 'pure-button toggle-mode button-link edit-text-button-element')
foo.click
foo.span.set('Hello')

运行此操作会给我初步错误expected Hash or (:how, 'what'), got ["Hello"]
对我在这里做错了什么的想法?

3 个答案:

答案 0 :(得分:2)

找到一个有效的解决方案:点击与元素交互后,我可以使用send_keys设置文本。所以我这样做了:

foo = @browser.button(:class, 'pure-button toggle-mode button-link edit-text-button-element')
foo.click
@browser.send_keys {keystrokes simulated here}

答案 1 :(得分:1)

那是因为你不能在watir-webdriver中设置span的文本。至少这么容易。但是,如果你愿意这样做:

puts foo.span.text

它会起作用。以下是您可以使用span执行的完整列表:Usefull Link

当然有办法改变你的范围内的文字:

browser.execute_script("arguments[0].textContent= 'Hello'", foo.span)

但我无法想象在现实世界中真正需要进行实际测试的情况。

答案 2 :(得分:0)

class定位器只接受一个类。

如果你需要它的所有类都是唯一的:

@browser.button(css: ".pure-button.toggle-mode.button-link.edit-text-button-element")