首页 > 解决方案 > Splinter/selenium 将某些字符解释为转义序列

问题描述

我在 Mac 上使用 Selenium (3.14.0)、Splinter (0.9.0)、Chrome Webdriver 和 XQuartz 来测试我的代码。

当我尝试在表单中输入数据时,某些字符没有到达input. 说,我some_text_input.type('cats')输入的只是“猫”。

经过一番调查,我发现 3 个字符得到了特殊处理(其余的都通过了):

请注意,这只发生在 Mac 上,并且在 CI 环境中可以正常工作。

有没有人碰到过这样的事情?逃跑发生在哪里?

标签: pythonseleniumselenium-webdriverselenium-chromedriversplinter

解决方案


万一有些可怜的灵魂碰到这种情况,发生这种情况的原因是:

在 Chrome 内部,ui::VKEY_BACK是短路的,并且永远不会转换为等效的 x 键代码。Chrome 不尊重远程 x 服务器的键码映射。

正如 2014 年的这个chromedriver 错误中所述。所以罪魁祸首是 chromedriver 和 XQuartz 的组合。在撰写本文时(2018 年 9 月),这个 bug 并没有太大的进展(请登录 chromium.org 并投票!)。我目前的解决方法是确保在我的测试中不使用有问题的字母。到目前为止,它们是:e、r、s 和 6。可能还有更多。


推荐阅读