使用Selenium-Maven插件通过谷歌Chrome运行Selenium 2.0 Selenese测试

时间:2011-06-16 17:59:00

标签: google-chrome maven-2 selenium selenium-rc selenium-webdriver

我试图通过Google Chrome(版本12.0.742.100)上的selenium maven插件(版本1.1)运行一些Selenium 2.0 HTML测试,我收到错误,无法调用方法'indexOf'未定义< / strong>,在尝试执行Open Command之后。

搜索之后,似乎我们应该使用 - disable-web-security 参数执行我们的chrome可执行文件,这对Selenese目标来说并不容易。看起来插件允许我们指定chrome可执行文件的文件路径作为Selenium-Maven插件中参数的一部分,但它不允许我附加 - disable-web-security 来电。如果我尝试这样做,它会发出maven构建错误。

我尝试做的是将调用放入批处理文件中,然后指向我的POM中的批处理文件,这样就可以了。然而,最终发生的事情是Chrome浏览器启动并且不会转到测试运行器,它会保留在我的主页上。

我的问题是,无论如何都要克服我使用Selenium-Maven插件在Chrome中通过Selenese测试指出的错误?如果没有,除了将测试转换为JUnits / TestNg测试之外,最好的方法是什么。

请参阅下面我的POM文件的片段。

....
<properties>
    <selenium.version>2.0b3</selenium.version>
</properties>
<build>
    <plugins>
        <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>selenium-maven-plugin</artifactId>
            <version>1.1</version>
            <dependencies>
                <dependency>
                    <groupId>org.seleniumhq.selenium</groupId>
                    <artifactId>selenium</artifactId>
                    <version>${selenium.version}</version>
                    <type>pom</type>
                    <exclusions>
                        <!-- prevent ant:ant versus org.apache.ant:ant collision -->
                        <exclusion>
                            <groupId>ant</groupId>
                            <artifactId>ant</artifactId>
                        </exclusion>
                    </exclusions>
                </dependency>
            </dependencies>
            <executions>
                <execution>
                    <id>Run-googlechrome-Script</id>
                    <phase>integration-test</phase>
                    <goals>
                        <goal>selenese</goal>
                    </goals>
                    <configuration>
                        <browser>*googlechrome</browser>
                        <suite>src/test/selenium/html/TestSuite.html</suite>
                        <startURL>http://localhost:5555/</startURL>
                        <results>${project.build.directory}/results/googlechrome-smoke-results.html</results>
                        <port>5555</port>
                        <timeoutInSeconds>5000</timeoutInSeconds>
                        <multiWindow>true</multiWindow>
                    </configuration>
                </execution>
            </executions>
        </plugin>
    </plugins>
....

谢谢,

1 个答案:

答案 0 :(得分:1)

尝试所需的功能 - 请参阅此处:http://code.google.com/p/selenium/wiki/ChromeDriver

所以我建议你在@BeforeClass函数中使用这样的东西:

 @BeforeClass
 public static void createAndStartService() {
  service = new ChromeDriverService.Builder()
    .usingChromeDriverExecutable(new File("path/to/my/chromedriver"))
  DesiredCapabilities capabilities = DesiredCapabilities.chrome();
  capabilities.setCapability("chrome.switches", Arrays.asList("--disable-web-security"));
  WebDriver driver = new ChromeDriver(capabilities);

BTW最好的方法是将chromedriver.exe存储在你的maven / src子目录中