Python Selenium 脚本会丢弃密钥,但仅当在 VNC 上使用时

Python Selenium script drops keys but only when used on a VNC

设置:

我在 Debian 机器上有一个 Python/Selenium/Chromedriver 脚本,可以在网页的文本框中输入数据。失败的代码非常简单:

element = browser.find_element_by_path('//input[@name="ReqDocID"]')
element.clear()
element.send_keys(doc_id) # doc_id is a 3 character string

当我从 Windows 机器和 运行 X-windows 桌面上的 xterm 设置脚本到 Debian 时,[=32= 中的字符] 随机掉落。在条目之间添加延迟没有任何区别。网页在使用JS录入时不修改文本框的内容。使用 Chrome 和 headlesschrome 时都会出现问题。我确认我有一个新版本的 chromedriver (fixed a drop key issue),并且我的键盘设置为英语以避免另一个已知问题。

经过几个小时的故障排除,我终于发现了一些有趣的东西。如果我在 Windows 框上使用 Putty 直接通过 ssh 进入 Debian(没有 X-windows,没有 VNC),然后 运行 脚本就可以完美运行。当我 运行 来自 VNC 桌面的相同脚本时,由于字符被删除,它每次都会失败。

有谁知道为什么 运行通过 VNC 连接运行脚本会有所不同?谢谢!

TightVNC 存在一个与在 chromedriver 中发送密钥相关的未解决的错误。 Issue 1509: TightVNC: sendKeys()

作为讨论中建议的解决方法,它在 vnc4server 上不可重现。你可以试试。