【问题标题】:How to setup Selenium (WebDriver and Server) with PHP bindings如何使用 PHP 绑定设置 Selenium(WebDriver 和服务器)
【发布时间】:2014-11-26 11:15:02
【问题描述】:

我正在尝试查找有关如何在“客户端-服务器”类型的设置中使用 PHP 绑定设置 Selenium 的具体信息。我什至不确定我想要的是否可能,但我会尽力描述我想要实现的目标。

我在一个 Web 开发项目中进行 QA,我们正在与分布式团队成员一起工作。我们需要自动化前端测试,并且已经确定(由于多种因素)Selenium 是这项工作的最佳人选。 我们的团队专注于 PHP,因此将 Selenium 与 PHP 绑定一起使用是有意义的。

我最大的挑战是:

1) 如何安装这些 PHP 绑定?

2) 如何在 PHP 中创建和执行 Selenium 脚本?这似乎很明显,但我需要知道是否需要在 PHP 中创建某种“项目”,或者这是否需要不同的步骤。当涉及到默认的 JAVA 绑定时,手册非常清晰和详细,但在 PHP 绑定方面却无可救药。

3) 我如何做这一切,同时想从客户端调用测试,但让它由“服务器/虚拟机”执行? (请记住,如果有可能,我还希望能够在服务器上创建测试,这可以在客户端桌面上执行/调用测试活动。)

4) 我如何设置一个满足所有要求的服务器来运行带有 PHP 绑定的 Selenium Server?

目标是能够最初创建一个 VM(可能是 Vagrant 盒子),其中包含 Selenium Server(以及如果需要的其他组件)和实际的测试脚本,可以在团队成员之间共享。 这个虚拟机应该能够执行无头测试,但理想情况下还应该能够在主机上驱动测试(如果可能的话)。

从技术上讲,它应该支持 QA 在产品中发现问题的场景,并且应该能够只指定所需的脚本来重现它。负责解决问题的开发人员只需要在他的机器上运行脚本即可实际重现发现的错误。

最终我们希望将 VM 迁移到实际服务器,因此我们希望从一开始就这样设置它。一旦我们准备好迁移到物理服务器,这将使事情变得更加简单。

我一直在互联网上寻找详细的文档,但在几乎所有文档中,许多假设都是关于已经配置和设置的环境。我真的需要一步一步地解释如何设置。

PHPUnit 与 Selenium 配对似乎有点奇怪,因为它们都涵盖了完全不同的测试领域。我在 PHPUnit 网站上看到过(同样不完整的)说明,但这似乎很笨拙,我们的开发团队对这种设置也不是很热衷。 我们有人建议使用 Jenkins,但我个人不认为 Jenkins 会如何消除 Selenium 的正常设置,反正从一开始就必须经过。

我已经在 VM 中作为服务运行了 Selenium Server,我只需要知道我还需要什么,以及我需要如何设置它,如何配置它。如何让事物交流等等。

任何帮助/想法将不胜感激。

【问题讨论】:

  • 你试过 Facebook 的 php-webdriver 吗? github.com/facebook/php-webdriver 很适合我。
  • 我看过那个,但由于它没有给出完整的说明,我不太清楚如何使用它。我想这是我的主要问题。我自己不是PHP开发人员,所以我真的需要菜鸟指导。既然你正在使用它,你能不能给我一个非常快速的概述你是如何安装它的?
  • 您可以通过 composer (getcomposer.org) 安装 Facebook 的 php-webdriver 包。我的 selenium web 驱动程序副本在我的本地计算机上运行——但是,让它远程运行并不是一个很大的飞跃(我曾经使用 Sauce Labs (saucelabs.com) 来实现这一点)。

标签: php selenium jenkins selenium-webdriver installation


【解决方案1】:

要在本地运行,请按照此处的说明进行操作:

https://github.com/facebook/php-webdriver#getting-started

这是您可以使用的示例 PHP webdriver 脚本。它将打开 Firefox,带您到 google 的页面并提交搜索查询:

    // you'll need to modify this path so it points to the composer autoloader
    require_once __DIR__ . '/vendor/autoload.php';

    /**
     * since I'm running the selenium jar locally, this is all I need.
     * I just run it in the background and my php scripts connect to it and
     * the tests
     */ 
    $host = 'http://localhost:4444/wd/hub';

    $driver = RemoteWebDriver::create($host, DesiredCapabilities::firefox());

    $driver->get('http://google.com');
    $element = $driver->findElement(WebDriverBy::name('q'));
    $element->sendKeys('Cheese');
    $element->submit();

这是您正在寻找的那种细节吗?

【讨论】:

  • 嗨,ymas,我需要一点时间来检查一下,但它确实显示了我正在寻找的一些东西。不过,我肯定会回来的。
  • 好吧,我已经进行了一些广泛的测试,并尝试让 webdriver 与 chromedriver 和 xvfb 一起使用以进行无头设置。您的示例似乎确实有效,但是在运行测试时,不知何故我在控制台中获得了(看起来像)网页输出。我不得不说,正确设置所有组件以使其协同工作是一项巨大的挑战,我感到非常遗憾的是没有一个完整的指令集来说明如何从头到尾进行设置。再次感谢您的回答。这不是“解决方案”,但确实让我继续前进。
【解决方案2】:

如果你像我一样是视觉学习者,这个

Youtube 视频

Selenium WebDriver set up with PHP - Selenium PHP traininig

将帮助您做到这一点。 :)

【讨论】:

    猜你喜欢
    • 2017-03-09
    • 2012-06-10
    • 2013-03-27
    • 2018-05-08
    • 1970-01-01
    • 2018-07-07
    • 2019-03-29
    • 1970-01-01
    • 2021-10-11
    相关资源
    最近更新 更多