WebdriverIO - 从字符串中删除字符

WebdriverIO - characters being stripped out of string

这可能是一个远景,但我看到了最奇怪的事情。我正在使用 WebdriverIO 的 setValueaddValue 函数,每当我的字符串包含数字 3 时,它就会被删除并且不会输入到输入框中。我可以在这些输入中手动输入 3,所以我不知道发生了什么。 3 是我见过的唯一一个角色。

有什么想法吗?

更新:这仅发生在 Chrome

更新 2:很抱歉缺少详细信息。这是附加信息。我正在使用 wdio 测试运行器。此问题不会在 Safari 或 Firefox 中出现,仅在 chrome.

中出现

browser.setValue(usernameInput, "t3st") 会将 "tst" 输入到 usernameInput 元素中。还有 browser.addValue(usernameInput, "t3st")。任何包含 3 的字符串都将输入到任何元素,但字符串中将缺少所有 3。

package.json 依赖关系:

  "dependencies": {
    "babel-preset-es2015": "~6.24.0",
    "babel-register": "~6.26.0",
    "chai": "~4.1.2",
    "chromedriver": "^2.33.2",
    "wdio-cucumber-framework": "~1.0.2",
    "wdio-phantomjs-service": "~0.2.2",
    "wdio-selenium-standalone-service": "~0.0.9",
    "wdio-spec-reporter": "~0.1.2",
    "webdriverio": "4.7.1"
  },
  "devDependencies": {
    "babel-jest": "~21.2.0",
    "babel-polyfill": "~6.26.0",
    "eslint": "~4.9.0",
    "eslint-config-airbnb-base": "~12.1.0",
    "eslint-plugin-import": "~2.8.0",
    "forever": "~0.15.3",
    "http-server": "~0.10.0",
    "jest": "~21.2.0"
  }

好吧,我看过了,但没能重现。我使用 chromedriverwdio-selenium-standalone-service 的不同变体尝试了以下两个示例。一切正常。

My guess is that:

  • 也许您尝试填写的输入有一些 JavaScript 背后的逻辑(表单验证),这可能会截断数字;
  • 或者,也许您的 package.json 依赖项中有一些您之前全局安装 (npm install -g <packageName>) 而忘记的旧软件(过时的软件包);

WebdriverIO (v4.8.0):

> browser.setValue('*[connectqa-mya="first-name"]',"t3st t3st t3st 1234test")
{ state: 'pending' }
> [13:27:12]  COMMAND   POST     "/wd/hub/session/29096eb4bd851d6e3a49ad740c3c1ead/elements"
  [13:27:12]  DATA                {"using":"css selector","value":"*[connectqa-mya=\"first-name\"]"}
  [13:27:12]  RESULT              [{"ELEMENT":"0.8157706669622329-6"}]
  [13:27:12]  COMMAND     POST     "/wd/hub/session/29096eb4bd851d6e3a49ad740c3c1ead/element/0.8157706669622329-6/clear"
  [13:27:12]  DATA                {}
  [13:27:12]  COMMAND     POST     "/wd/hub/session/29096eb4bd851d6e3a49ad740c3c1ead/element/0.8157706669622329-6/value"
  [13:27:12]  DATA                {"value":["t","3","s","t"," ","t","3","s","t"," ","(13 more items)"],"text":"t3st t3st t3st 1234test"}

WebdriverIO (v4.7.1):

> browser.setValue('*[connectqa-mya="first-name"]',"t3st t3st test1234 @#$%^&*")
{ state: 'pending' }
> [13:38:25]  COMMAND   POST     "/wd/hub/session/3b621c3d7a774872cf3a37d1bec17014/elements"
  [13:38:25]  DATA                {"using":"css selector","value":"*[connectqa-mya=\"first-name\"]"}
  [13:38:25]  RESULT              [{"ELEMENT":"0.42949459661053613-6"}]
  [13:38:25]  COMMAND     POST     "/wd/hub/session/3b621c3d7a774872cf3a37d1bec17014/element/0.42949459661053613-6/clear"
  [13:38:25]  DATA                {}
  [13:38:25]  RESULT              undefined
  [13:38:25]  COMMAND     POST     "/wd/hub/session/3b621c3d7a774872cf3a37d1bec17014/element/0.42949459661053613-6/value"
  [13:38:25]  DATA                {"value":["t","3","s","t"," ","t","3","s","t"," ","(16 more items)"]}

As next-steps in the debugging process I would:

  • 尝试在不同的 folder/repo 中复制具有相同 dependencies 的项目,看看是否可行;
  • 对于上述方法,我将从您正在使用的软件包的最新版本开始(例如:WebdriverIO 不是最新的);
  • 尝试使用 .execute("$('<selector>').val('t3st t3st test12345');") 并查看使用 JavaScript/JQuery 是否会产生不同的结果(如果是这样,它会缩小问题范围:不是表单验证,但可能 chromedriver)。

让我知道进展如何,或者是否有帮助。干杯!