当前位置: 首页 > 知识库问答 >
问题:

失败:尝试时元素状态无效。sendKeys()到文本字段

羊浩广
2023-03-14

我不断地得到失败:如果我在浏览器中,我可以向文本框发送键()时,元素状态无效。explore()模式。

文本字段正在根据活动的用户ID验证条目。请注意,当我处于browser.explore()模式时,我可以使用相同的命令sendKeys()

更新:我无法发布超文本标记语言代码,因为有一个字符。限制,我有超过7500个数组[对象对象]这里是一个屏幕截图,如果它有助于该字段的屏幕截图及其超文本标记语言

我的代码:

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

错误:-失败:无效的元素状态(会话信息:chrome=62.0.3202.94)(驱动程序信息:chrome驱动程序=2.34.522932(4140ab217e1ca1bec0c4b4d1b148f3361eb3a03e),平台=Mac OS X 10.12.6x86_64)(会话信息:chrome=62.0.3202.94)(驱动程序信息:chrome驱动程序=2.34.522932(4140ab217e1ca1bec0c4b4d1b148f3361eb3a03e),平台=Mac OS X 10.12.6x86_64)17)在WebEnode_modules_(... PathToMyApp/node_modules/selenium-web驱动程序/lib/node_modules: 25)在WebE_tickCallbackKeys(... PathToMyApp/node_modules/selenium-web驱动程序/lib/Action_: 19)在actionFn(... PathToMyApp/node_modules/量角器/lib/node_modules: 34)在Array.map(本地)在actionResults.getWebElements.then(... PathToMyApp/node_modules/量角器/lib/element.ts:484: 67)在ManagedPromise.invokeCallback_(...... PathToMyApp/node_modules/selenium-web驱动程序/lib/promise.js:1366: 14)在TaskQueue.execute_(...... PathToMyApp/node_modules/selenium-web驱动程序/lib/promise.js:2970: 14)在TaskQueue.executeNext_(...... PathToMyApp/node_modules/selenium-web驱动程序/lib/promise.js:2953: 27)在... PathToMyApp/lement.schedule/selen/lib/element.ts:482: 23)在ElementArrayFinder。(匿名函数)[作为sendKeys](... path ToMyApp/node_modules/protractor/lib/element.ts:96: 21)在ElementFinder。(匿名函数)[作为sendKeys](... path ToMyApp/node_modules/protractor/lib/element.ts:873: 14)在... path ToMyApp/e2e/app. e2e-spec. ts: 204:17在elementArrayFinder_。然后在ManagedPromise(... path ToMyApp/node_modules/protractor/lib/element. ts: 840:22)。invokeCallback_(...... path ToMyApp/node_modules/selenium-web驱动程序/lib/promise. js: 1366:14)在TaskQueue。execute_(...... path ToMyApp/node_modules/selenium-web驱动程序/lib/promise. js: 2970:14)在TaskQueue。executeNext_(... path ToMyApp/node_modules/selenium-web:任务:在UserContext的控制流中运行它(“我填写teamsAndOwner表单”)。(...路径MyApp/node_modules/jasminewd2/index. js: 94:19)在...路径MyApp/node_modules/jasminewd2/index. js: 64:48在ControlFlow. emit(...路径MyApp/node_modules/selenium-web驱动程序/lib/events. js: 62:21)在ControlFlow。shutdown_(...路径MyApp/node_modules/selenium-web驱动程序/lib/promise. js: 2565:10)在shutdownTask_。微任务(...路径MyApp/node_modules/selenium-web驱动程序/lib/promise. js: 2490:53)在...路径MyApp/node_modules/selenium-web驱动程序/lib/promise. js: 2619:9)在...路径MyApp/node_modules/selenium-web驱动程序/lib/promise. js: 676:(... path ToMyApp/e2e/app. e2e-spec. ts: 7:1)在模块。_compile(modle. js: 570:32)在Module. m._compile(... path ToMyApp/node_modules/ts-node/src/index. ts: 382:23)在模块。_extensions... js(module. js: 579:10)在Object.要求.扩展。(匿名函数)[作为. ts](... path ToMyApp/node_modules/ts-node/src/index. ts: 385:12)在Module. load(module. js: 487:32)在tryModuleLoad(module. js: 446:12)在功能。模块。_load(module. js: 438:3)在Module.要求(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)允许我的脚本发送密钥没有错误。

为什么选择浏览器。等待(EC.visibilityOf(businessOwner)不工作,然后…?***更新(1020am)浏览器。等待(EC.elementtobelickable(businessOwner))似乎在起作用。测试,如果有效,将解决此问题

共有1个答案

戚繁
2023-03-14

以下是最终有效的代码

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

elementToBeClickable-似乎正在工作。我不知道elementToBeClickable和visibilityOf之间的实现区别是什么,但visibilityOf对我来说并不适用

 类似资料:
  • 即使其中一个软断言失败,测试也会继续。但是在我的例子中,我的测试在软断言失败后停止,因为找不到下一个测试元素。 这可以正常工作,但如果我设置: 我收到以下错误消息: 组织。openqa。硒。无接触元素异常。第二个软断言!!! 测试停止。 环境:Selenium 3.5 geckodriver Mozilla 56.0.1。

  • 问题内容: 我已经有了一个状态: 现在,我想用新信息对其进行更新。因此,向其添加另一个div。 像这样: 我该怎么做?或者我需要从零开始设置新状态 问题答案: 我认为以组件状态存储jsx组件不是一个好主意。我认为您应该仅以呈现组件所需的状态保存数据。 如果您真的想在状态中存储jsx,为什么不将“对话”属性定义为数组?然后,您可以向其中添加新组件。 但是最好只存储数据,例如“ first”和“ ne

  • 尝试在父SVG中定位电池指示器。SVG元素有一个电池的路径和一个显示百分比的文本元素。它的位置有两个css转换和文本属性。文本在Chrome/Firefox中打开时定位正确,但在Safari中会产生分支。 代码本https://Codepen.io/niwsa/pen/rnnbkeg?editors=1000

  • 失败:过时的元素引用:元素未附加到页面文档 我尝试在for循环的每次迭代中获取元素,但是for循环在第一次解析promise之前执行,这意味着x的“limit”值被重复传递,测试只是在同一个下拉选项上单击几次。

  • [ERROR]未能在项目上执行goal org.jooq:jooq-codegen-maven:3.15.1:generate(默认)事件-dao-jooq:goal org.jooq:jooq-codegen-maven:3.15.1:generate失败:由于API不兼容,无法加载插件'org.jooq:jooq-codegen-maven:3.15.1'中的mojo“generate”:or

  • 当我尝试在VS2010中构建一个简单的程序时,编译成功,但当我尝试构建解决方案时,它会给我以下错误: 我做错了什么?