2017-12-07 1 views
0

Ich bekomme Fehler bei Versuch zu sendKeys() zu einem Textfeld, zu dem ich fähig bin, wenn ich in browser.explore() Modus bin.Fehlgeschlagen: ungültiger Elementstatus bei Versuch, .SendKeys() an ein Textfeld zu senden

Das Feld Text validiert den Eintrag gegen aktive Benutzer-IDs. Bitte beachten Sie, dass ich in der Lage bin sendKeys() den gleichen Befehl zu verwenden, wenn ich in browser.explore() Modus

UPDATE bin: Ich HTML-Code nicht in der Lage bin zu schreiben, da es ein Zeichen ist. begrenzen, und ich habe mehr als 7500 Arrays [object Object] hier ein Screenshot, wenn es screenshot of the field and its HTML

meinen Code hilft:

var businessOwner = element(by.name("productManager")); 
businessOwner.sendKeys('someValue'); 
Ich habe

error:- Failed: invalid element state (Session info: chrome=62.0.3202.94) (Driver info: chromedriver=2.34.522932 (4140ab217e1ca1bec0c4b4d1b148f3361eb3a03e),platform=Mac OS X 10.12.6 x86_64) (Session info: chrome=62.0.3202.94) (Driver info: chromedriver=2.34.522932 (4140ab217e1ca1bec0c4b4d1b148f3361eb3a03e),platform=Mac OS X 10.12.6 x86_64) at WebDriverError (...pathToMyApp/node_modules/selenium-webdriver/lib/error.js:27:5) at InvalidElementStateError (...pathToMyApp/node_modules/selenium-webdriver/lib/error.js:100:5) at Object.checkLegacyResponse (...pathToMyApp/node_modules/selenium-webdriver/lib/error.js:505:15) at parseHttpResponse (...pathToMyApp/node_modules/selenium-webdriver/lib/http.js:509:13) at doSend.then.response (...pathToMyApp/node_modules/selenium-webdriver/lib/http.js:440:13) at process._tickCallback (internal/process/next_tick.js:103:7) From: Task: WebElement.sendKeys() at Driver.schedule (...pathToMyApp/node_modules/selenium-webdriver/lib/webdriver.js:816:17) at WebElement.schedule_ (...pathToMyApp/node_modules/selenium-webdriver/lib/webdriver.js:1921:25) at WebElement.sendKeys (...pathToMyApp/node_modules/selenium-webdriver/lib/webdriver.js:2084:19) at actionFn (...pathToMyApp/node_modules/protractor/lib/element.ts:94:34) at Array.map (native) at actionResults.getWebElements.then (...pathToMyApp/node_modules/protractor/lib/element.ts:484:67) at ManagedPromise.invokeCallback_ (...pathToMyApp/node_modules/selenium-webdriver/lib/promise.js:1366:14) at TaskQueue.execute_ (...pathToMyApp/node_modules/selenium-webdriver/lib/promise.js:2970:14) at TaskQueue.executeNext_ (...pathToMyApp/node_modules/selenium-webdriver/lib/promise.js:2953:27) at asyncRun (...pathToMyApp/node_modules/selenium-webdriver/lib/promise.js:2813:27) at ...pathToMyApp/node_modules/selenium-webdriver/lib/promise.js:676:7 at process._tickCallback (internal/process/next_tick.js:103:7)Error at ElementArrayFinder.applyAction_ (...pathToMyApp/node_modules/protractor/lib/element.ts:482:23) at ElementArrayFinder.(anonymous function) [as sendKeys] (...pathToMyApp/node_modules/protractor/lib/element.ts:96:21) at ElementFinder.(anonymous function) [as sendKeys] (...pathToMyApp/node_modules/protractor/lib/element.ts:873:14) at ...pathToMyApp/e2e/app.e2e-spec.ts:204:17 at elementArrayFinder_.then (...pathToMyApp/node_modules/protractor/lib/element.ts:840:22) at ManagedPromise.invokeCallback_ (...pathToMyApp/node_modules/selenium-webdriver/lib/promise.js:1366:14) at TaskQueue.execute_ (...pathToMyApp/node_modules/selenium-webdriver/lib/promise.js:2970:14) at TaskQueue.executeNext_ (...pathToMyApp/node_modules/selenium-webdriver/lib/promise.js:2953:27) at asyncRun (...pathToMyApp/node_modules/selenium-webdriver/lib/promise.js:2813:27) at ...pathToMyApp/node_modules/selenium-webdriver/lib/promise.js:676:7 at process._tickCallback (internal/process/next_tick.js:103:7) From: Task: Run it("I fill teamsAndOwners Form") in control flow at UserContext. (...pathToMyApp/node_modules/jasminewd2/index.js:94:19) at ...pathToMyApp/node_modules/jasminewd2/index.js:64:48 at ControlFlow.emit (...pathToMyApp/node_modules/selenium-webdriver/lib/events.js:62:21) at ControlFlow.shutdown_ (...pathToMyApp/node_modules/selenium-webdriver/lib/promise.js:2565:10) at shutdownTask_.MicroTask (...pathToMyApp/node_modules/selenium-webdriver/lib/promise.js:2490:53) at MicroTask.asyncRun (...pathToMyApp/node_modules/selenium-webdriver/lib/promise.js:2619:9) at ...pathToMyApp/node_modules/selenium-webdriver/lib/promise.js:676:7 at process._tickCallback (internal/process/next_tick.js:103:7) From asynchronous test: Error at Suite. (...pathToMyApp/e2e/app.e2e-spec.ts:170:1) at Object. (...pathToMyApp/e2e/app.e2e-spec.ts:7:1) at Module._compile (module.js:570:32) at Module.m._compile (...pathToMyApp/node_modules/ts-node/src/index.ts:382:23) at Module._extensions..js (module.js:579:10) at Object.require.extensions.(anonymous function) [as .ts] (...pathToMyApp/node_modules/ts-node/src/index.ts:385:12) at Module.load (module.js:487:32) at tryModuleLoad (module.js:446:12) at Function.Module._load (module.js:438:3) at Module.require (module.js:497:17) at require (internal/module.js:20:19)

versucht:

1.

browser.wait(EC.visibilityOf(businessOwner.get(0)), 30000, 'businessOwner is not there '); 
businessOwner.sendKeys(UID); 

gleichen Fehler, egal was das Timeout ist

2.

function setBusinessOwner(UID: string){ 
    browser.wait(EC.visibilityOf(businessOwner), 20000).then(function(){ 
     businessOwner.click().then(function(){ 
      businessOwner.sendKeys(UID); 
}); 
}); 
} 
setBusinessOwner('someValue'); 

gleichen Fehler.

*** UPDATE (09.00 Uhr): scheinen, wie sein Timing-Problem (höchstwahrscheinlich)

Zugabe browser.sleep (10000) erlaubt mein Skript zu Sendkeys ohne Fehler.

warum browser.wait (EC.visibilityOf (businessOwner) dann nicht funktioniert ...? *** UPDATE (1020am) browser.wait (EC.elementToBeClickable (businessOwner) scheinen zu arbeiten. Prüfung und wenn funktioniert, wird

+0

Bitte lassen Sie mich wissen, welche Informationen benötigt werden, um dies zu beheben. Vielen Dank im Voraus – toxicBurn

+0

ich kenne nur sendKeys als Methode eines WebDriver und nicht eines HTMLElement. Wie es mit dem WebDriver funktioniert, finden Sie hier: https://StackOverflow.com/questions/31632923/using-javascriptexecutor-to-sendkeys-plus-click-on-web-element – mtizziani

+0

an welchem ​​Ort Sie diesen Fehler bekommen. Es wird mir helfen zu untersuchen, ob Sie das vollständige Protokoll teilen. –

Antwort

0

hier, um dieses Problem zu beheben ist der Code, der schließlich

function setBusinessOwner(UID: string){ 
    browser.wait(EC.elementToBeClickable(businessOwner), 20000).then(function(){ 
     businessOwner.sendKeys(UID); 
}); 
} 
setBusinessOwner('abc1234'); 

elementToBeClickable arbeitet - scheinen zu arbeiten, ich weiß nicht, was ist die Umsetzung Unterschied zwischen elementToBeClickable und visibilityOf, aber visibilityOf war es nicht. Training für mich

+0

visibilityOf ist warten bis Element ist sichtbar, Es wird wahr zurückgegeben, sobald das Element in dom verfügbar ist. elementToBeClickable - Warten Sie, bis das Element nicht anklickbar ist. (Es wird false zurückgegeben, wenn eine Schaltfläche sichtbar, aber nicht anklickbar ist.) - Ich hoffe, Ihnen dabei geholfen zu haben –

Verwandte Themen