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}
我正在玩转 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}