Sendkey()用于textarea

时间:2014-09-01 09:05:43

标签: javascript selenium protractor

我有以下HTML代码:

<div>
   <textarea id="modalContentText"
         data-modal="home.modal"
         ng-model="home.modal.data.text"
         ng-required="true">
   </textarea>
</div>

基于我到目前为止在线阅读的测试代码的变化:

//First try
it('Enter text', function () {
   element(by.id('modalContentText')).click();
   element(by.id('modalContentText')).sendKeys('Content 1');
});

//Second try
it('Enter text', function () {
   element(by.id('modalContentText')).clear();
   element(by.id('modalContentText')).sendKeys('Content 1');
});

//Third try
it('Enter text', function () {
   element(by.id('modalContentText')).click();
   element(by.id('modalContentText')).clear();
   element(by.id('modalContentText')).sendKeys('Content 1');
});

但是没有一个测试代码正常工作。首先尝试给我“UnknownError:无法聚焦元素”。第二次和第三次尝试都给我“InvalidElementStateError:元素必须是用户可编辑的才能清除它”。有谁知道这是如何做得好的?感谢。

1 个答案:

答案 0 :(得分:0)

根据例外,这里是元素的问题。由于无法获得焦点而无法通过只读状态清除。您可以尝试在selenium中使用executeScript方法,并使用它在字段中设置值。例如

var element = driver.findElement(By.Css("#modalContentText"));
driver.executeScript("arguments[0].setAttribute('value', arguments[1])", element, newValue);