0

我是 Geb 的新手,并试图在进一步使用之前进行快速测试以评估它。由于代理权限等,我想在不使用 Grape 的情况下这样做。因此,我尝试手动下载所需的 jar,并尝试在命令行上指定它们。

但是,这样做时,我会收到以下未找到 WebDriverException 的类:

C:\geb-test>groovy -cp geb-core-0.9.2.jar;selenium-htmlunit-driver-2.35.0.jar;selenium-support-2.35.0.jar GoogleTest
Caught: java.lang.NoClassDefFoundError: org/openqa/selenium/WebDriverException
java.lang.NoClassDefFoundError: org/openqa/selenium/WebDriverException
        at GoogleTest.run(GoogleTest.groovy:3)
Caused by: java.lang.ClassNotFoundException: org.openqa.selenium.WebDriverException
        ... 1 more

C:\geb-test>

我需要额外的罐子吗?如果有,有哪些?我尝试了其他一些但没有任何乐趣 - 正如我注意到 WebDriverException 在 selenium-api-2.35.0.jar 中,但它没有任何区别。

因此,以下是从一些版本信息开始的详细信息:

  • Groovy 版本:2.1.7 JVM:1.7.0_40 供应商:Oracle Corporation 操作系统:Windows 7

首先,我使用了简单的 geb 内联脚本示例,我将其放入名为 GoogleTest.groovy 的文件中:

import geb.Browser

Browser.drive {
    go "http://google.com/ncr"

    // make sure we actually got to the page
    assert title == "Google"

    // enter wikipedia into the search field
    $("input", name: "q").value("wikipedia")

    // wait for the change to results page to happen
    // (google updates the page dynamically without a new request)
    waitFor { title.endsWith("Google Search") }

    // is the first link to wikipedia?
    def firstLink = $("li.g", 0).find("a.l")
    assert firstLink.text() == "Wikipedia"

    // click the link 
    firstLink.click()

    // wait for Google's javascript to redirect to Wikipedia
    waitFor { title == "Wikipedia" }
}

然后根据geb 安装说明,我确保我有 @Grab 注释中提到的罐子。这导致我的测试目录具有以下文件:

07/11/2013  10:46    <DIR>          .
07/11/2013  10:46    <DIR>          ..
06/11/2013  14:51           460,165 geb-core-0.9.2.jar
06/11/2013  15:13               711 GoogleTest.groovy
06/11/2013  14:55            56,189 selenium-htmlunit-driver-2.35.0.jar
06/11/2013  14:54           130,535 selenium-support-2.35.0.jar
               4 File(s)        647,600 bytes

然后为了完整起见,我尝试上述命令行执行:

C:\geb-test>groovy -cp geb-core-0.9.2.jar;selenium-htmlunit-driver-2.35.0.jar;selenium-support-2.35.0.jar GoogleTest
Caught: java.lang.NoClassDefFoundError: org/openqa/selenium/WebDriverException
java.lang.NoClassDefFoundError: org/openqa/selenium/WebDriverException
        at GoogleTest.run(GoogleTest.groovy:3)
Caused by: java.lang.ClassNotFoundException: org.openqa.selenium.WebDriverException
        ... 1 more

C:\geb-test>

我开始怀疑问题是否是使用 Groovy '-cp' 命令行的多个 jars。我现在正试图将罐子放在 ${user.home}.groovy\lib 目录中。但后来我得到了一个未定义的 GebException 类。也许你必须使用 Grape 才有机会让它发挥作用。:/ 让我知道。

4

1 回答 1

1

好吧,我放弃了,决定尝试强制代理身份验证工作。

我决定尝试使用 Chrome 驱动程序,所以我的注释看起来像这样:

@Grapes([
    @Grab("org.gebish:geb-core:0.9.2"),
    @Grab("org.seleniumhq.selenium:selenium-chrome-driver:2.26.0"),
    @Grab("org.seleniumhq.selenium:selenium-support:2.26.0")
])

最终结果是存在重要的依赖链,因此可能不建议手动尝试。如果您确实希望这样做,请使用以下内容准备您的课程路径。

从一个空的葡萄存储库中,我得到了这个(显示为“葡萄列表”):

  • cglib cglib-nodep [2.1_3]
  • com.google.guava 番石榴 [13.0.1]
  • com.google.guava guava-parent [13.0.1]
  • 通用编解码器 通用编解码器 [1.6]
  • 公共日志记录公共日志记录 [1.1.1]
  • net.java.dev.jna jna [3.4.0]
  • net.java.dev.jna 平台 [3.4.0]
  • org.apache apache [4, 7, 9]
  • org.apache.commons commons-exec [1.1]
  • org.apache.commons commons-parent [17, 22, 5]
  • org.apache.httpcomponents httpclient [4.2.1]
  • org.apache.httpcomponents httpcomponents-client [4.2.1]
  • org.apache.httpcomponents httpcomponents-core [4.2.1]
  • org.apache.httpcomponents httpcore [4.2.1]
  • org.apache.httpcomponents 项目 [6]
  • org.gebish geb-ast [0.9.2]
  • org.gebish geb-core [0.9.2]
  • org.gebish geb-隐式断言 [0.9.2]
  • org.gebish 等待 [0.9.2]
  • org.json json [20080701]
  • org.seleniumhq.selenium selenium-api [2.26.0]
  • org.seleniumhq.selenium 硒铬驱动程序 [2.26.0]
  • org.seleniumhq.selenium selenium-parent [2.26.0]
  • org.seleniumhq.selenium selenium-remote-driver [2.26.0]
  • org.seleniumhq.selenium 硒支持 [2.26.0]
  • org.sonatype.oss oss-parent [7]
于 2013-11-07T23:05:48.083 回答