开发者技巧

有关如何使用 Crazy Fun 执行 Selenium 测试套件的详细信息。

此文档以前位于 wiki

运行单个测试

在开发 WebDriver 时,通常希望运行单个测试而不是特定驱动程序的整个测试套件。

您可以通过这种方式运行给定测试类中的所有测试

./go test_firefox onlyRun=CombinedInputActionsTest

您还可以通过键入以下命令直接从命令行运行单个测试

./go test_firefox method=foo

不在错误或失败时停止

默认情况下,测试套件会在错误和失败时停止。您可以通过将 haltonerrorhaltonfailure 环境变量设置为 0 来禁用此行为。

查看测试日志

当您运行测试时,测试结果不会显示在屏幕上。它们被写入 `./build/test_logs` 文件夹。会写入一对文件。它们的名字相对一致,并包含已运行测试的详细信息。这一对文件包括一个 txt 文件和一个 xml 文件。xml 文件包含有关运行时环境的更多信息,例如路径、Ant 版本等。这些文件会在下次执行相同的测试目标时被覆盖,因此如果结果对您很重要,您可能需要存档它们。

使用 Rake

Rake 与使用其他构建工具(如“make”或“ant”)非常相似。您可以通过添加一个参数来指定要运行的“目标”,并且您可以一次添加多个目标。请注意,由于 WebDriver 不依赖于 ruby 的安装并使用 JRuby,因此应该直接涉及 rake - 请改用 _go_ 脚本。例如,为了清理构建,然后构建并运行 HtmlUnitDriver 测试

./go clean test_htmlunit

使用的默认目标将编译代码并运行所有测试。更有趣的目标是

目标描述
clean删除构建目录的内容,删除所有已编译的工件
test编译 HtmlUnitDriver、FirefoxDriver 和 InternetExplorerDriver 的依赖项,并运行它们的所有测试以及支持库的测试
firefox编译 FirefoxDriver
htmlunit编译 HtmlUnitDriver
ie编译 InternetExplorerDriver。这不会在非 Windows 系统上编译 C++,但无论您碰巧使用哪个操作系统,都会始终编译 Java
support猜猜这是做什么的 :)
test_htmlunit编译依赖项,然后运行 HtmlUnitDriver 的测试。对于此表中的所有编译目标,都可以遵循相同的“test_x”模式。

使用 Java 测试运行远程调试器

您可以在调试模式下运行测试,并等待远程 java 侦听器(可以在 eclipse 或 intellij 中设置)。

./go debug=true suspend=true test_firefox

调试 Firefox 驱动

从 Firefox 进程本身获取输出

这通常对于调试 Firefox 启动问题很有用。Java 系统属性 webdriver.firefox.logfile 将指示 FirefoxDriver 将输出重定向到一个文件

java -Dwebdriver.firefox.logfile=/dev/stdout -cp selenium-2.jar <sometest>

输出到错误控制台

用于调试 Firefox 驱动程序扩展的常用技术是调试语句。以下两种方法可以从扩展内的几乎任何 Javascript 代码中使用

  • Logger.dumpn() - 将字符串记录到控制台(并将参数转换为字符串)。例如:Logger.dumpn("找到元素:" + 节点)
  • Logger.dump() - 获取单个参数(一个对象),并转储其所有内容:已实现的接口、数据字段、方法等。

将错误控制台的输出获取到文件

要查看使用 Logger 实用程序生成的输出,必须打开 Firefox 的错误控制台 - 在远程机器上很难或根本不可能。幸运的是,有一种方法可以将输出的内容转储到一个文件中

FirefoxProfile p = new FirefoxProfile();
p.setPreference("webdriver.log.file", "/tmp/firefox_console");
WebDriver driver = new FirefoxDriver(p);
...

webdriver.log.file 首选项将指示 Logger 将控制台的所有内容转储到指定的文件中。webdriver.log.file

将更多输出获取到命令行

当怀疑来自 Firefox 的额外日志记录可能有益时,可以将调试级别一直调高

export NSPR_LOG_MODULES=all:3

设置此环境变量将导致 Firefox 将其他消息记录到控制台。将此环境变量与 webdriver.firefox.logfile 一起使用,以获取 Firefox 到控制台的输出。

调试 Internet Explorer 驱动

为了从 IEDriverServer.exe 获取详细信息,您可以使用选项 devMode=true 运行测试,此选项会将日志记录级别设置为 DEBUG 并将日志输出重定向到文件 iedriver.log

./go test_ie devMode=true

添加测试

WebDriver 的大多数测试用例都位于 java/client/test/org/openqa/selenium 下。例如,要演示单击元素的问题,应将测试用例添加到 ClickTest。测试用例已经有一个驱动程序实例 - 无需创建。测试使用由进程内服务器提供的页面,这些页面来自 common/src/web。它们的 URL 由 Pages 类提供,因此在添加页面时也将其添加到 Pages 类。

手动与 RemoteWebDriverServer 交互

我们可以使用 Web 浏览器或 telnet 等工具与 RemoteWebDriverServer 交互,例如调试 JSON 协议。这是一个检查安装在本地机器上的服务器状态的简单示例

在 Web 浏览器中

http://localhost:8080/wd/hub/status/

在 telnet 中

telnet localhost 8080

GET /wd/hub/status/ HTTP/1.0

在 Mac 和 Unix 中,通常尝试使用 curl

curl  http://localhost:8080/wd/hub/status

在 linux 上使用 wget

wget http://localhost:8080/wd/hub/status

在所有这些情况下,RemoteWebDriverServer 都应响应


{status:0} 
上次修改时间:2022 年 1 月 10 日:更多 wiki (#907) [部署站点] (adcf706a1ad)