Rspec 和瓦蒂尔;在按钮元素中定位和更改 <span> 文本

Rspec and Watir; locating and changing <span> text within a button element

我正在玩转 rpsec 和 watir-webdriver,遇到一个奇怪的问题,我可以点击 进入 一个按钮,但我无法与(或更改)文本在 span 里面。
这就是 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"]
对我在这里做错了什么有什么想法吗?

class 定位器只接受单个 class。

如果您需要所有 classes 才能使其独一无二,请执行以下操作:

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

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

puts foo.span.text

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

当然有办法改变你的span中的文本:

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

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

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

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