Geb如何自动填充用户名/密码提示

时间:2013-02-15 08:44:11

标签: firefox selenium acceptance-testing spock geb

我正在使用geb with spock作为我的验收测试框架。一切都很顺利,除了有几个测试的问题,当它重定向到另一个网站时,我们被提示输入用户名和密码来访问该网站。因为这是一个浏览器提示而不是我可以提交的表单,您是否可以在网站的浏览器配置文件中自动设置或在驱动程序上设置它?

我正在使用firefox作为浏览器类型进行测试。

编辑:这是我的build.gradle文件

apply plugin: 'eclipse'
apply plugin: 'groovy'
apply plugin: 'idea'

repositories {
    mavenCentral()
}

task wrapper(type: Wrapper) {
    gradleVersion = '1.3'
}

// The drivers we want to use
ext.drivers = ["firefox"]

dependencies {
    groovy group: 'org.codehaus.groovy', name: 'groovy', version: '1.8.6'

    def gebVersion = "0.7.2"
    def seleniumVersion = "2.26.0"

    // If using Spock, need to depend on geb-spock
    testCompile "org.codehaus.geb:geb-spock:$gebVersion"
    testCompile "org.spockframework:spock-core:0.6-groovy-1.8"

// Drivers
    drivers.each { driver ->
        testCompile "org.seleniumhq.selenium:selenium-$driver-driver:$seleniumVersion"
    }
}

drivers.each { driver ->
    task "${driver}Test"(type: Test) {
        testReportDir = reporting.file("$name/tests")
        testResultsDir = file("$buildDir/test-results/$name")

        systemProperty "geb.build.reportsDir", reporting.file("$name/geb")
        systemProperty "geb.env", driver
        // If you wanted to set the baseUrl in your build…
        // systemProperty "geb.build.baseUrl", "http://myapp.com"
    }
}

task test(overwrite: true, dependsOn: drivers.collect { tasks["${it}Test"] })

2 个答案:

答案 0 :(得分:0)

我不知道这是否会起作用,因为2.25.0的changlog提到它尚未针对任何驱动程序实现,但是有一种方法可以使用WebDriver切换到警报,然后使用authenticateUsing(Credentials)方法

在您的Spock规范中,您可以尝试以下方法:

driver.switchTo().alert().authenticateUsing(new UserAndPassword('user', 'pass'))

答案 1 :(得分:0)

为了解决这个问题,我最终在Firefox中使用浏览器配置文件并安装了一个自动填充提示的插件。然后在Geb Acceptance测试中进行设置,以便自动使用具有正确配置文件的Firefox。