我正在玩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"]
对我在这里做错了什么的想法?
答案 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")