python - Splinter/selenium 将某些字符解释为转义序列
问题描述
我在 Mac 上使用 Selenium (3.14.0)、Splinter (0.9.0)、Chrome Webdriver 和 XQuartz 来测试我的代码。
当我尝试在表单中输入数据时,某些字符没有到达input
. 说,我some_text_input.type('cats')
输入的只是“猫”。
经过一番调查,我发现 3 个字符得到了特殊处理(其余的都通过了):
- 'e' 变为退格 - 并删除前一个字符
- 'r' 变成返回
- 's' 变成空间
请注意,这只发生在 Mac 上,并且在 CI 环境中可以正常工作。
有没有人碰到过这样的事情?逃跑发生在哪里?
解决方案
万一有些可怜的灵魂碰到这种情况,发生这种情况的原因是:
在 Chrome 内部,
ui::VKEY_BACK
是短路的,并且永远不会转换为等效的 x 键代码。Chrome 不尊重远程 x 服务器的键码映射。
正如 2014 年的这个chromedriver 错误中所述。所以罪魁祸首是 chromedriver 和 XQuartz 的组合。在撰写本文时(2018 年 9 月),这个 bug 并没有太大的进展(请登录 chromium.org 并投票!)。我目前的解决方法是确保在我的测试中不使用有问题的字母。到目前为止,它们是:e、r、s 和 6。可能还有更多。
推荐阅读
- amazon-web-services - 在 AWS Cloud Formation 中,如何在 IAM 策略中使用 Ref 指定两个资源?
- flutter - 即使使用 SingleChildScrollview 也出现底部溢出错误
- sql - SSIS - 如何根据文件名中的时间戳从文件夹中动态选择 csv 文件
- tcp - NNG(Nano Message Next Generation)是否会定期自动传输一些心跳?
- python - docker-compose 与 Django 和 Postgresql:用户“postgres”的密码不匹配
- linux - Linux下如何使用代码模拟人使用蓝牙CTL连接蓝牙?
- blazor - Blazor - 如何从非 UI 组件在 UI 调度程序线程上启动任务?
- python - FieldError 试图使用通用外键删除 Django 实例
- reactjs - 无法通过 React MERN 中的嵌套 JSON 对象访问引用的集合数据
- php - 广播给其他人,不广播给当前