使用无头铬和硒,我可以成功地将密钥发送到Mac上的网站。但是,当我将相同的代码移植到我的 Linux 机器时,它会崩溃。违规行如下:
driver.find_element_by_xpath('//input[@id="username"]').send_keys(username)
我收到以下错误消息:
"an X display is required for keycode conversions, consider using Xvfb"
为什么这在 Linux 上不起作用?
这是chromedriver中的一个错误,详见此处。
根据镀铬驱动程序的新线索
问题出在ChromeDriver中。顾名思义,sendKey 命令将模拟的击键发送到 Chrome,ChromeDriver 负责将输入的文本字符串转换为相应的击键以发送到 Chrome。在Linux上,ChromeDriver使用X显示器进行转换,当没有X显示器可用时会失败。
它最近已修复,并将在 v 2.31 中发布。不幸的是,Chromium团队没有公开提供夜间构建,并且还没有正式的发布日期。
同时,您可以构建自己的chrome驱动程序或从第三方下载预构建的二进制文件...dockerfile 和工作二进制文件都可以在这个 github 上找到。