【问题标题】:Splinter/selenium interprets some characters as escape sequencesSplinter/selenium 将某些字符解释为转义序列
【发布时间】:2018-09-26 21:21:07
【问题描述】:

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

当我尝试在表单中输入数据时,某些字符无法到达input。说,我做some_text_input.type('cats') 输入只接收'cat'。

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

  • 'e' 变为退格 - 并删除前一个字符
  • 'r' 变为返回
  • 's' 变成空格

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

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

【问题讨论】:

  • 我在 Windows 上的 splinter/selenium 0.9.0/3.13.0 上看不到它。
  • 使用这个命令:from splinter import Browser;browser = Browser(driver_name='chrome');browser.visit('https://stackoverflow.com/questions/52526184/splinter-selenium-interprets-some-characters-as-escape-sequences');browser.find_by_xpath('//*[@id="search"]/div/input').type('cats')

标签: python selenium selenium-webdriver selenium-chromedriver splinter


【解决方案1】:

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

在 Chrome 内部,ui::VKEY_BACK 被短路并且永远不会 翻译成等效的 x 键码。 Chrome 不尊重 远程 x 服务器的键码映射。

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

【讨论】:

  • 喂,这听起来像是一场噩梦,必须记住和维护不包含特定字母的测试。我的第一反应是放弃 XQuartz ?‍♂️
  • 您会推荐什么作为 Mac OS 的替代品? (我的开发机器)
  • 我们计划放弃 chromedriver 转而使用 Firefox
  • 我想这取决于您使用 XQuartz 的目的。出于某种原因,您是否需要将它与 chromedriver 一起使用?或者你可以直接在 selenium 中使用 chromedriver 吗?
  • 基本上如果测试在 CI 中失败,我想在开发机器上运行它们并直观地查看浏览器在做什么以及为什么会失败。所以,是的,我确实需要它。正如我在问题中提到的那样——在 CI 上工作正常——当然没有 XQuartz。
猜你喜欢
  • 2019-05-18
  • 2013-02-07
  • 1970-01-01
  • 2013-05-28
  • 2016-04-28
  • 1970-01-01
  • 2011-06-03
  • 1970-01-01
  • 2011-07-15
相关资源
最近更新 更多