适用于mac / php的正确CodeceptionSelenium服务器,chromedriver疑难解答程序是什么?

问题描述

由于没有官方的故障排除信息,对于任何不了解使用类似系统进行安装的人来说,这都是艰巨的努力。

我想解决专门针对 OSX Catalina Selenium服务器/ Chromedriver配置的问题,并将它们全部放在一个地方。我还将在结尾处附上我的问题

在我看来,大多数问题都围绕着:

  • Selenium,Codeception或Chromedriver安装不正确
  • 以上版本(或PHP?)的冲突版本
  • Selenium服务器运行的端口问题
  • 编码错误:错别字,旧代码
  • 缺乏对终端/ java命令的了解
  • 路径问题
  • 我不知道的任何问题

我将以我在此过程中学到的东西开始,如果可以的话,请帮助填补空白或纠正我在下面陈述的内容

安装错误

brew install selenium-server-standalone

Chromedriver

brew tap homebrew/cask
brew cask install chromedriver

然后,您可以运行brew doctor来检查安装是否正常,并按照说明或Google问题进行操作。 More brew commands

  • 检查有冲突的版本

已安装的Google Chrome和Chromedriver应为同一版本。

通过转到应用程序左上方的“ Chrome”和“关于Google Chrome”来检查Chrome。

通过运行brew info chromedriver

检查Chromedriver
  • 端口问题

您可能正在尝试使用的端口上运行旧服务器。将其关闭,然后转到谷歌浏览器中的此页面

http://localhost:<port number>/selenium-server/driver?cmd=shutDownSeleniumServer

您可以使用-port标志指定在终端中运行Selenium的端口。像这样

java -jar <location of your server> -port 8090

然后在您的accept.suite.yml配置文件中将其匹配

url: 'http://localhost:<port number>/wd/hub'

我见过的最常见的代码是在上述代码行的末尾加斜杠,或者不包括'/ wd / hub'

格式设置如下:

actor: AcceptanceTester
modules:
    enabled:
        - WebDriver:
            url: 'http://192.168.88.100:<port number>/wd/hub'
            browser: chrome
        - \Helper\Acceptance

要格式化扩展名(自动运行)是这样的:

extensions:
    enabled:
        - Codeception\Extension\RunProcess:
            - chromedriver
  • 缺乏对终端/ java命令的了解

使用以下命令在终端中运行编解码测试

PHP vendor/bin/codecept run acceptance --steps

您必须先使用

cd <location of your code>
  • 路径

我不知道如何检查路径是否正确配置。 (它们是否在指向其他程序的配置文件中?)但是我一直看到它们的提示散布在周围。

  • 我的问题

从下面的日志中,我认为chromedriver正在加载,并且浏览器中发生了某事,但是它没有加载我的网站。而是加载下面的页面。非常感谢您的帮助!

Screenshot of loaded test page

日志:

Codeception PHP Testing Framework v4.1.8
Powered by PHPUnit 9.4.2 by Sebastian Bergmann and contributors.
Running with seed: 


Acceptance Tests (1) --------------------------------------------------------------------------------------------------

  [RunProcess] Starting chromedriver
QuizCest: New user_complete quiz
Signature: QuizCest:newUser_completeQuiz
Test: tests/acceptance/QuizCest.PHP:newUser_completeQuiz
Scenario --
 I am on page "/"
 I see "Fragrant"
 FAIL 

-----------------------------------------------------------------------------------------------------------------------
  [RunProcess] Stopping chromedriver


Time: 00:02.653,Memory: 10.00 MB

There was 1 failure:

---------
1) QuizCest: New user_complete quiz
 Test  tests/acceptance/QuizCest.PHP:newUser_completeQuiz
 Step  See "Fragrant"
 Fail  Failed asserting that  on page /wd/hub/static/resource/hub.html
--> Sessions
Create Session  |  Refresh Sessions
Chrome
e999201a1381fb966c9d02785c094ae6  |  Capabilities  |  Take Screenshot  |  Delete Session  |  Load Script
 Mac OS X 10.15.7  |  v3.141.59  |  re82be7d358
--> contains "Fragrant".

Scenario Steps:

 2. $I->see("Fragrant") at tests/acceptance/QuizCest.PHP:14
 1. $I->amOnPage("/") at tests/acceptance/QuizCest.PHP:13

Artifacts:

Png: /Applications/MAMP/htdocs/fragrantmandarin.com/tests/_output/QuizCest.newUser.completeQuiz.fail.png
Html: /Applications/MAMP/htdocs/fragrantmandarin.com/tests/_output/QuizCest.newUser.completeQuiz.fail.html

FAILURES!
Tests: 1,Assertions: 1,Failures: 1.

我的配置文件

actor: AcceptanceTester
modules:
    enabled:
        - WebDriver:
            url: 'http://localhost:4444/wd/hub'
            browser: chrome
        - \Helper\Acceptance

extensions:
    enabled:
        - Codeception\Extension\RunProcess:
            - chromedriver

step_decorators: ~     

解决方法

关于硒如何工作的excellent explanatory guide带来了突破。

我错误地认为WebDriver的网址是Selenium服务器的网址,但实际上是我的MAMP网址。

因此我将代码中的端口更改为MAMP网址:

- WebDriver:
            url: 'http://localhost:8888/wd/hub'
            browser: chrome
        - \Helper\Acceptance

瞧,一天的工作终于完成了。哈利路亚!希望这可以帮助其他人。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...