【问题标题】:Issues with 'send_keys(Keys.CONTROL + "A"), only works on Windows or Linux'send_keys(Keys.CONTROL + "A") 的问题,仅适用于 Windows 或 Linux
【发布时间】:2021-03-07 16:07:01
【问题描述】:

我正在开发一个自动化框架项目(Pytest 和 Selenium),我有几个流程需要在表单中编辑数据,所以我们一直使用的方法是选择现有文本(从文本框或下拉)使用Send Keys,然后只需“单击”CONTROL + A,然后我们使用Send Keys 以及单击Backspace 删除文本并添加新的。

这在 Windows 和 Linux 上完美运行,但显然它不适用于 Mac 计算机,我们在实施解决方案时考虑过,但我们没有遇到问题,因为每个人都使用 Windows 计算机(也是CI)。

我一直在寻找解决方案,似乎有很多人遇到同样的问题,但大多数解决方案并不适合所有人。我尝试了以下方法:

  • 双击选择文本 --> 无效
  • 不要删除文本,只需在现有文本中添加新文本 --> 仅适用于文本框,不适用于下拉菜单。
  • 检测操作系统,如果检测到 Mac,则使用 Command,如果检测到 Windows 或 Linux,则使用 Control --> 但它不起作用。

我认为主要问题是Ctrl 确实存在于 Mac 上,但它不适用于选择文本,因此它执行了操作,但并没有达到我们的预期。

有没有一种方法可以选择适用于所有操作系统的文本,或者有没有更简洁的方法来使用 Python?

【问题讨论】:

  • 在 macOS 上发送 Cmd 而不是 Ctrl 的具体问题是什么?
  • webelement 有一个“clear()”方法。您可能想尝试一下。
  • @jonrsharpe 问题是框架正在使用 CTRL,但我们很少有人使用 Mac,所以当他们在本地运行框架时,“编辑”测试用例会失败。所以我正在寻找操作系统不影响的解决方案。
  • @pcalkins 谢谢,我试过了,但它对我不起作用。
  • 当然,我理解为什么发送错误的密钥可能是个问题,我想问的是您提到的检测操作系统并发送适当密钥的具体问题是什么。给一个minimal reproducible example

标签: python python-3.x selenium pytest sendkeys


【解决方案1】:

config.py 文件中添加了以下 if 语句:

self.control_os = Keys.COMMAND if platform.system() == 'Darwin' else Keys.CONTROL

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-04-22
    • 2011-12-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-10-20
    • 1970-01-01
    相关资源
    最近更新 更多