【问题标题】:python 3.6 selenium webdriver error X display is required for sending-keys unable to ues Xvfbpython 3.6 selenium webdriver错误X display is required for sent-keys cannot ues Xvfb
【发布时间】:2017-12-09 10:16:03
【问题描述】:

我正在使用 selenium webdriver.Chrome 为我的测试环境创建具有特定功能的 webdriver。

    class MyDriver(webdriver.Chrome):
          def __init__(self, executable_path="chromedriver", port=0,
              chrome_options=None, service_args=None,
              desired_capabilities=None, service_log_path=None):
          super().__init__(executable_path, port, chrome_options, service_args,
                      desired_capabilities, service_log_path)  
              # vdisplay = Xvfb()
              # vdisplay.start()

部分测试包括使用element.send_keys(value) 发送密钥, 测试运行良好,直到几天前它开始崩溃并显示以下消息:

"selenium.common.exceptions.WebDriverException:消息:未知错误:键码转换需要 X 显示,考虑使用 Xvfb (会话信息:chrome=59.0.3071.115) (驱动信息:chromedriver=2.27.440175 (9bc1d90b8bfa4dd181fbbf769a5eb5e575574320),platform=Linux 4.10.0-22-generic x86_64)"

我反复搜索和研究我不明白错误...

我正在使用:

  • Python 3.6
  • PyCharm
  • chromedriver linux_64bit 2.27.440175

我发现的唯一有用的链接是chromiumhttps://bugs.chromium.org/p/chromedriver/issues/detail?id=1772 打开的错误,但我不熟悉那里的工具...

我想知道是否有人有发送密钥或修复此错误的解决方案我已尝试删除 chrome 并将其降级...它没有帮助!

任何帮助将不胜感激!

谢谢

【问题讨论】:

  • 找到解决方案了吗?
  • 不,我没有...我刚刚删除了我的 chrome-driver 并下载了一个新的...它必须工作的时间...这个项目在 Jenkins 上运行所以我只是添加Xvfb 让它在没有显示的情况下运行
  • @traw1234 我已经发布了一个答案希望它可以帮助你...
  • “需要编辑”表示:任何人都可以通过改进格式和修复小故障来解决问题。但是,每当提出问题的 OP 需要添加更多信息时,您都应该寻找一个有效的关闭理由。如果您认为“可以通过编辑来解决这个问题,我只是现在没有时间”,请仅投票编辑。我希望这是有道理的。除此之外:我感谢快速而善良的回归!但可以肯定的是:向 OP 发表评论告诉他出了什么问题通常会有所帮助......

标签: python python-3.x selenium google-chrome selenium-webdriver


【解决方案1】:

在 Xvfb 遇到这个问题很长一段时间后,我采用了一种新方法来运行 selenium 测试而不显示:

class MySolutionsDriver(webdriver.Chrome):
    def __init__(self, executable_path=PATH_chromedriver, port=0,
             chrome_options=None, service_args=None,
             desired_capabilities=None, service_log_path=None):
        # vdisplay = Xvfb()
        # vdisplay.start()

        # for full screen uncheck two lines below and import of Options
        chrome_options = Options()
        chrome_options.add_argument('--headless')
        chrome_options.add_argument('--start-maximized')
        chrome_options.add_argument('disable-infobars')
        chrome_options.add_argument('--disable-extensions')
        chrome_options.add_argument('--no-sandbox')
        chrome_options.add_argument('--disable-dev-shm-usage')
        chrome_options.add_argument("--incognito")

        super().__init__(executable_path, port, chrome_options, service_args,
                     desired_capabilities, service_log_path)

使用 chrome_options 并使用 add_argument 函数添加参数,以便在不显示的情况下运行测试,我使用 >“--headless”。

除此之外,我还发现了许多可以添加的好论据!

希望这可以帮助任何人解决这个问题。

PS:仅供参考-Xvfb 不适用于 Windows(或据我了解的 Microsoft 服务器)。

【讨论】:

    猜你喜欢
    • 2017-04-11
    • 2018-01-25
    • 2020-07-26
    • 1970-01-01
    • 1970-01-01
    • 2020-01-30
    • 1970-01-01
    • 1970-01-01
    • 2012-01-30
    相关资源
    最近更新 更多