WebdriverIO - 从字符串中删除字符
WebdriverIO - characters being stripped out of string
这可能是一个远景,但我看到了最奇怪的事情。我正在使用 WebdriverIO 的 setValue
和 addValue
函数,每当我的字符串包含数字 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"
}
好吧,我看过了,但没能重现。我使用 chromedriver
或 wdio-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
)。
让我知道进展如何,或者是否有帮助。干杯!
这可能是一个远景,但我看到了最奇怪的事情。我正在使用 WebdriverIO 的 setValue
和 addValue
函数,每当我的字符串包含数字 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"
}
好吧,我看过了,但没能重现。我使用 chromedriver
或 wdio-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
)。
让我知道进展如何,或者是否有帮助。干杯!