【问题标题】:Codeception undefined index: ELEMENT errorCodeception 未定义索引:ELEMENT 错误
【发布时间】:2019-10-26 15:27:04
【问题描述】:

我正在使用 Codeception 进行验收测试。在我的本地电脑上,使用 selenium 和 chromedriver 运行测试没有问题。直到 1 周,它在我的 git 上也可以正常工作,但是现在出现了这个错误。

"[PHPUnit\Framework\Exception] 未定义索引:元素"

本地它工作正常,没有错误。

我已经搜索了这个错误并找到了一个提示,我必须使用“-enablepassthrough false”启动 selenium。但这并不真正有效。

在使用相同设置的 1 周之前,它工作正常。

这是我的acceptance.suite.yml:

actor: AcceptanceTester
modules:
    enabled:
        - WebDriver:
            url: 'https://website.com' 
            host: 'selenium__standalone-chrome'
            port: 4444
            browser: chrome 
            window_size: 1920x1080 

【问题讨论】:

标签: php selenium webdriver codeception


【解决方案1】:

对于 Chrome/ChromeDriver v79 设置 w3cfalseacceptance.suite.yml 帮助:

modules:
  enabled:
    - WebDriver:
        capabilities:
          chromeOptions:
            w3c: false

【讨论】:

  • 这是我在 Mac 上使用 chrome 的唯一选择。
  • 有人知道如何为 FF 声明这个吗?
【解决方案2】:

此错误消息...

[PHPUnit\Framework\Exception] Undefined index: ELEMENT

...暗示 ChromeDriverclick() 通过 Codeception 存在问题。

根据@reinholdfuereder 的comment 在讨论中facebook/php-webdriver - W3C WebDriver protocol support

  • 使用默认 W3C 协议时,Codeception (v2.5.6) 测试失败,Undefined index: ELEMENTwaitForElement() 操作中。
  • 使用旧协议时,waitForElement() 操作测试成功,随后看似也成功的click() 操作,但waitForElementNotVisible() 操作失败。
  • Codeception 的click() 操作被转换为clickElement WebDriver 命令,ChromeDriver v75 似乎不再支持。

解决方案

如果您正在使用 ChromeDriver v75.xChromium v​​75.x 并看到此错误,则需要传递一个额外的 chromeOptions w3c 设置为 true


结尾

您可以在以下位置找到一些详细的讨论:

【讨论】:

    【解决方案3】:

    正如@DebanjanB 解释的那样,设置上述选项是一种解决方案,这就是通过将 facebook/php-webdriver 更新到版本 >= 1.7.0 得到的结果

    对于您的应用程序,我认为更可靠的解决方案(或习惯)是使用特定的 docker 映像。

    您的 yaml 让我猜测您正在使用 selenium/standalone-chrome docker 映像。在最新版本 (3.141.59-palladium) 中,他们将包含的 Chrome 版本从 74 更新为 75(请参阅:https://github.com/SeleniumHQ/docker-selenium/releases)。

    您的本地计算机可能仍在运行旧版本的 Chrome 74,因此那里没有问题。但是无论何时重建 docker 机器(例如,使用某些 CI 环境时),您都会获得最新版本。在这种情况下,一个新的 Chrome 版本。这“迫使”您也使用新的 facebook/php-webdriver 升级您的 php 机器。

    我建议指定图像的版本以防止这些不需要的副作用,例如

    image: selenium/standalone-chrome:3.141.59-oxygen
    

    或者,如果你已经让它在 Chrome 75 上运行,3.141.59-palladium

    【讨论】:

      猜你喜欢
      • 2018-04-05
      • 2019-10-20
      • 2014-01-17
      • 2011-02-21
      • 2016-08-17
      • 2011-12-12
      • 1970-01-01
      • 2019-04-03
      • 2012-05-23
      相关资源
      最近更新 更多