【发布时间】:2018-05-22 04:22:33
【问题描述】:
我在尝试将sendKeys() 输入到一个文本框时不断收到Failed: invalid element state 错误,如果我处于browser.explore() 模式,我可以访问该文本框。
文本字段正在根据活动用户 ID 验证条目。请注意,当我处于 browser.explore() 模式时,我可以使用相同的命令 sendKeys()
更新:我无法发布 HTML 代码,因为有一个字符。限制,我有超过 7500 个数组 [object Object] 这是截图,如果有帮助 screenshot of the field and its HTML
我的代码:
var businessOwner = element(by.name("productManager"));
businessOwner.sendKeys('someValue');
错误:- 失败:无效元素状态 (会话信息:chrome=62.0.3202.94) (驱动程序信息:chromedriver=2.34.522932 (4140ab217e1ca1bec0c4b4d1b148f3361eb3a03e),平台=Mac OS X 10.12.6 x86_64) (会话信息:chrome=62.0.3202.94) (驱动程序信息:chromedriver=2.34.522932 (4140ab217e1ca1bec0c4b4d1b148f3361eb3a03e),平台=Mac OS X 10.12.6 x86_64) 在 WebDriverError (...pathToMyApp/node_modules/selenium-webdriver/lib/error.js:27:5) 在 InvalidElementStateError (...pathToMyApp/node_modules/selenium-webdriver/lib/error.js:100:5) 在 Object.checkLegacyResponse (...pathToMyApp/node_modules/selenium-webdriver/lib/error.js:505:15) 在 parseHttpResponse (...pathToMyApp/node_modules/selenium-webdriver/lib/http.js:509:13) 在 doSend.then.response (...pathToMyApp/node_modules/selenium-webdriver/lib/http.js:440:13) 在 process._tickCallback (internal/process/next_tick.js:103:7) 来自:任务:WebElement.sendKeys() 在 Driver.schedule (...pathToMyApp/node_modules/selenium-webdriver/lib/webdriver.js:816:17) 在 WebElement.schedule_ (...pathToMyApp/node_modules/selenium-webdriver/lib/webdriver.js:1921:25) 在 WebElement.sendKeys (...pathToMyApp/node_modules/selenium-webdriver/lib/webdriver.js:2084:19) 在 actionFn (...pathToMyApp/node_modules/protractor/lib/element.ts:94:34) 在 Array.map (本机) 在 actionResults.getWebElements.then (...pathToMyApp/node_modules/protractor/lib/element.ts:484:67) 在 ManagedPromise.invokeCallback_ (...pathToMyApp/node_modules/selenium-webdriver/lib/promise.js:1366:14) 在 TaskQueue.execute_ (...pathToMyApp/node_modules/selenium-webdriver/lib/promise.js:2970:14) 在 TaskQueue.executeNext_ (...pathToMyApp/node_modules/selenium-webdriver/lib/promise.js:2953:27) 在 asyncRun (...pathToMyApp/node_modules/selenium-webdriver/lib/promise.js:2813:27) 在 ...pathToMyApp/node_modules/selenium-webdriver/lib/promise.js:676:7 在 process._tickCallback (internal/process/next_tick.js:103:7) 错误 在 ElementArrayFinder.applyAction_ (...pathToMyApp/node_modules/protractor/lib/element.ts:482:23) 在 ElementArrayFinder.(匿名函数) [as sendKeys] (...pathToMyApp/node_modules/protractor/lib/element.ts:96:21) 在 ElementFinder.(匿名函数) [as sendKeys] (...pathToMyApp/node_modules/protractor/lib/element.ts:873:14) 在 ...pathToMyApp/e2e/app.e2e-spec.ts:204:17 在 elementArrayFinder_.then (...pathToMyApp/node_modules/protractor/lib/element.ts:840:22) 在 ManagedPromise.invokeCallback_ (...pathToMyApp/node_modules/selenium-webdriver/lib/promise.js:1366:14) 在 TaskQueue.execute_ (...pathToMyApp/node_modules/selenium-webdriver/lib/promise.js:2970:14) 在 TaskQueue.executeNext_ (...pathToMyApp/node_modules/selenium-webdriver/lib/promise.js:2953:27) 在 asyncRun (...pathToMyApp/node_modules/selenium-webdriver/lib/promise.js:2813:27) 在 ...pathToMyApp/node_modules/selenium-webdriver/lib/promise.js:676:7 在 process._tickCallback (internal/process/next_tick.js:103:7) 来自:任务:在控制流中运行它(“我填写 teamsAndOwners 表单”) 在用户上下文。 (...pathToMyApp/node_modules/jasminewd2/index.js:94:19) 在 ...pathToMyApp/node_modules/jasminewd2/index.js:64:48 在 ControlFlow.emit (...pathToMyApp/node_modules/selenium-webdriver/lib/events.js:62:21) 在 ControlFlow.shutdown_ (...pathToMyApp/node_modules/selenium-webdriver/lib/promise.js:2565:10) 在 shutdownTask_.MicroTask (...pathToMyApp/node_modules/selenium-webdriver/lib/promise.js:2490:53) 在 MicroTask.asyncRun (...pathToMyApp/node_modules/selenium-webdriver/lib/promise.js:2619:9) 在 ...pathToMyApp/node_modules/selenium-webdriver/lib/promise.js:676:7 在 process._tickCallback (internal/process/next_tick.js:103:7) 从异步测试: 错误 在套房。 (...pathToMyApp/e2e/app.e2e-spec.ts:170:1) 在对象。 (...pathToMyApp/e2e/app.e2e-spec.ts:7:1) 在 Module._compile (module.js:570:32) 在 Module.m._compile (...pathToMyApp/node_modules/ts-node/src/index.ts:382:23) 在 Module._extensions..js (module.js:579:10) 在 Object.require.extensions.(匿名函数) [as .ts] (...pathToMyApp/node_modules/ts-node/src/index.ts:385:12) 在 Module.load (module.js:487:32) 在 tryModuleLoad (module.js:446:12) 在 Function.Module._load (module.js:438:3) 在 Module.require (module.js:497:17) 在要求(内部/module.js:20:19)
我试过了:
1.
browser.wait(EC.visibilityOf(businessOwner.get(0)), 30000, 'businessOwner is not there ');
businessOwner.sendKeys(UID);
无论超时时间是多少,都会出现同样的错误
2.
function setBusinessOwner(UID: string){
browser.wait(EC.visibilityOf(businessOwner), 20000).then(function(){
businessOwner.click().then(function(){
businessOwner.sendKeys(UID);
});
});
}
setBusinessOwner('someValue');
同样的错误。
***更新(上午 9 点): 似乎是它的时间问题(很可能)
添加 browser.sleep(10000) 允许我的脚本正确地发送密钥。
为什么 browser.wait(EC.visibilityOf(businessOwner) 不起作用然后...? *** 更新(上午 1020 点) browser.wait(EC.elementToBeClickable(businessOwner) 似乎正在工作。测试,如果有效,将解决此问题
【问题讨论】:
-
请告诉我解决此问题需要哪些信息。提前谢谢你
-
我只知道 sendKeys 是 WebDriver 的方法,而不是 HTMLElement 的方法。它如何与 WebDriver 一起工作,您可以在这里找到:stackoverflow.com/questions/31632923/…
-
您在哪个位置收到此错误。如果您共享完整的日志,它将帮助我调查。
-
@mtizziani,如果我不清楚,对不起:我无法发布元素的 HTML 以显示它的外观
-
@YashJagdale,我已经用日志更新了问题
标签: javascript typescript protractor