我正在使用Selenium(3.14.0(,Splinter(0.9.0(,Chrome Webdriver,Mac上的XQuartz来测试我的代码。
当我尝试将数据输入表单时,某些字符没有到达input
。比如说,我确实some_text_input.type('cats')
输入只收到"猫"。
经过一番调查,我发现 3 个字符得到了特殊处理(而其余的都通过了(:
- "e"变为退格键 - 并删除前一个字符
- "r"变为返回
- "s"变成空间
请注意,这仅在 Mac 上发生,并且在 CI 环境中工作正常。
有没有人碰到过这样的事情?逃跑发生在哪里?
万一一些可怜的灵魂碰到了这一点,发生这种情况的原因是:
在Chrome内部,
ui::VKEY_BACK
短路,永远不会 转换为其 X 键代码等效项。铬不尊重 远程 X 服务器的密钥代码映射。
如 2014 年的这个 chromedriver 错误中所述。所以罪魁祸首是chromedriver和XQuartz的结合。截至撰写本文时(2018 年 9 月(,此错误尚未有太大进展(请在 chromium.org 登录并对其进行投票!我目前的解决方法是确保在我的测试中不使用冒犯性的字母。到目前为止,它们是:e,r,s和,6。 可能还有更多。