我正在尝试将日期发送到Anuglar应用程序的输入文本框。文本框仅接受日期格式。我尝试将日期声明为int或Date,然后在末尾添加一个空字符串,但这没有用。 .Click()方法适用于此对象。
int enterdate = 01012016;
PageObjectsLocators.locate_Date_textfield(Iwebdriver).SendKeys(enterdate + "");
DateTime iDate;
iDate = DateAndTime.Today.AddDays(-1);
PageObjectsLocators.locate_Date_textfield(Iwebdriver).SendKeys(iDate + "");
在两种情况下我都得到ElementNotInteractableException
<input type="text" id="ev_dateofevent" ng-keypress="allowDigit($event);" placeholder="MM/dd/yyyy" class="form-control ng-pristine ng-valid ng-isolate-scope ng-empty ng-valid-maxlength ng-valid-date ng-touched" uib-datepicker-popup="MM/dd/yyyy" ng-model="fieldValueObj" is-open="isOpenCalendar" maxlength="10" ng-blur="datechange(field,id,datetitle);" close-text="Close" alt-input-formats="altInputFormats" ng-disabled="datereadonly" aria-invalid="false" style="">
答案 0 :(得分:0)
您可以尝试使用Javascript而非input
设置SendKeys
的值。这是许多不接受传统Selenium交互的JS模块元素的解决方法。
var input = PageObjectsLocators.locate_Date_textfield(Iwebdriver);
Iwebdriver.executeScript("arguments[0].setAttribute('value', 'dateValueHere')", input);
使用C#代替量角器示例进行更新:
// declare JS executor -- use your webdriver instance for driver
IJavaScriptExecutor js = (IJavaScriptExecutor)driver;
var input = PageObjectsLocators.locate_Date_textfield(Iwebdriver);
js.ExecuteScript("arguments[0].setAttribute('value', 'dateValueHere')", input);
如果您不喜欢JS方法,可以尝试的另一种选择是在发送键之前单击元素以使其成为焦点。
int enterdate = 01012016;
// click the input field
PageObjectsLocators.locate_Date_textfield(Iwebdriver).Click();
// send keys to the field
PageObjectsLocators.locate_Date_textfield(Iwebdriver).SendKeys(enterdate + "");
答案 1 :(得分:0)
所以我不得不在1个框架下组合14个应用程序,并测试要在winodws / mac / linux中执行。因此,唯一可以在所有平台/应用程序之间正确发送密钥的方法是以下丑陋的代码:
sendKeys: async ($element, keyCode = "") => {
await $element.clear();
await $element.click();
await $element.sendKeys("X");
await $element.sendKeys(protractor.Key.BACK_SPACE);
let value = await $element.getAttribute("value");
for (let i = 0; i < value.length; i++) {
await $element.sendKeys(protractor.Key.BACK_SPACE);
}
await $element.sendKeys(keyCode)
}
我无法提出比这更好的东西