我正在使用nighwatch.js进行web ui测试,我想将值设置为textarea,而textarea有一个属性,其中包含我的实际文本,我正在编写完整的textarea以及我如何设置以下内容。
<div class="textarea-description">
<textarea cols="50" class="myClass setText" data-def placeholder="text to be replaced using nightwatch"/>
</div>
我正尝试在textarea的属性 data-def占位符上设置值,方法如下
browser.setValue('.textarea-description textarea[type=text]','nightwatch'); or
browser.setValue('.textarea-description textarea[data-def placeholder=text]','nightwatch'); or
browser.setValue('.textarea-description textarea[type=data-def placeholder]','nightwatch');
但没有任何效果。
答案 0 :(得分:1)
这可能不是最佳解决方案,但可行:
browser
.execute("document.querySelector('.textarea-description .myClass').setAttribute('placeholder', 'nightwatch');")
如果你有jQuery,你可以让它更好一点:
browser
.execute("$('.textarea-description .myClass').attr('placeholder', 'nightwatch');")
答案 1 :(得分:1)
感谢您提出的所有宝贵建议,您提供的所有建议都能提供良好的知识,但不幸的是,这些建议都没有效果。我已经通过使用以下内容解决了这个问题。
client.setValue('.textarea-description textarea','new text to be write.');
实际上属性&#34; data-def占位符&#34;只使用不是实际文本的水印,所以它正在工作。
答案 2 :(得分:0)
您可以使用xpath获取属性。
.useXpath().setValue('//textarea[contains(@placeholder,'text to be replaced using nightwatch')]@placeholder', 'nightwatch')
How to select specified node within Xpath node sets by index with Selenium?
答案 3 :(得分:0)
这对我有用。
.assert.visible('div.textarea-description textarea.setText')
.moveToElement('div.textarea-description textarea.setText', null, null)
.mouseButtonClick('left')
.keys([browser.Keys.CONTROL, "a"])
.keys([browser.Keys.CONTROL, "nightwatch"])