Intellij idea Geb测试忽略IntelliJ中启动的GebConfig.groovy文件

Intellij idea Geb测试忽略IntelliJ中启动的GebConfig.groovy文件,intellij-idea,groovy,selenium-chromedriver,geb,Intellij Idea,Groovy,Selenium Chromedriver,Geb,在IntelliJ IDEA中运行。 GebConfig.groovy位于/src/test/resources中 我正在使用Chrome驱动程序 我打字的时候 System.setProperty(“webdriver.chrome.driver”、“my/path”) 在我的spec文件中,我右键单击并选择run,测试工作,这意味着它打开Chrome并加载页面 当我在spec文件中没有这样做,而只是将其保留在GebConfig.groovy文件中时,我会收到错误消息“必须设置驱动程序可执行文

在IntelliJ IDEA中运行。 GebConfig.groovy位于
/src/test/resources

我正在使用Chrome驱动程序

我打字的时候
System.setProperty(“webdriver.chrome.driver”、“my/path”)
在我的spec文件中,我右键单击并选择run,测试工作,这意味着它打开Chrome并加载页面

当我在spec文件中没有这样做,而只是将其保留在GebConfig.groovy文件中时,我会收到错误消息“必须设置驱动程序可执行文件的页面”

有一个气隙,所以我不能复制粘贴;我将在此处尽可能多地键入: GebConfig.groovy:

import org.openqa.selenium.chrome.ChromeDriver

...

environments {
    chrome {
        System.setProperty("webdriver.chrome.driver", "my/path")
        driver = {new ChromeDriver()}
    }
}
spec文件非常简单,就像GitHub上的示例一样

import LoginPage
import geb.spock.GebReportSpec

class LoginSpec extends GebReportSpec
{

    // Works when I put this here, but I should not have to do this!
    System.setProperty("webdriver.chrome.driver", "my/path")

     def "user can log in" () {
        when: "log in as me"
            def loginPage = to LoginPage
            loginPage.login("me")
        then: 
          ....
     }
 }

如果要在geb配置中保留路径,要解决问题,请在environment部分之外设置路径,如下所示:

import org.openqa.selenium.chrome.ChromeDriver

System.setProperty("webdriver.chrome.driver", "my/path")

//You can also set the driver up here as a default and running with an environment set will override it
driver = {new ChromeDriver()}


environments {
    chrome {
        driver = {new ChromeDriver()}
    }
}
就我个人而言,我会避免将驱动程序路径添加到geb配置中,并在intelliJ中创建一个本地运行的运行配置

右键单击等级库文件>单击“创建‘nameOfMySpec’”

现在将驱动程序路径添加到VM参数:

-Dgeb.env=chrome -Dwebdriver.chrome.driver=my/path
还值得考虑一个shell脚本,它也可以通过Jenkins等调用:

mvn test -Dgeb.env=chrome -Dwebdriver.chrome.driver=my/path

如果要在geb配置中保留路径,要解决问题,请在environment部分之外设置路径,如下所示:

import org.openqa.selenium.chrome.ChromeDriver

System.setProperty("webdriver.chrome.driver", "my/path")

//You can also set the driver up here as a default and running with an environment set will override it
driver = {new ChromeDriver()}


environments {
    chrome {
        driver = {new ChromeDriver()}
    }
}
就我个人而言,我会避免将驱动程序路径添加到geb配置中,并在intelliJ中创建一个本地运行的运行配置

右键单击等级库文件>单击“创建‘nameOfMySpec’”

现在将驱动程序路径添加到VM参数:

-Dgeb.env=chrome -Dwebdriver.chrome.driver=my/path
还值得考虑一个shell脚本,它也可以通过Jenkins等调用:

mvn test -Dgeb.env=chrome -Dwebdriver.chrome.driver=my/path

我试过你的建议。同样的错误也发生了。我使用的是旧版本的想法。我将升级并重试。一个问题:如果我真的让它工作了,这是否意味着我必须对每个规范文件重复这个?我宁愿避免重复。最终可能会有20个规范文件。(shell脚本选项将涵盖这一点,但只有在我使用mvn的情况下)您可以在运行/调试配置中创建一个“默认值”,这意味着当您通过右键单击>运行在IntelliJ中运行测试时,它将使用默认配置。这将允许您仅在一个位置进行上述设置。如果您希望继续在配置中设置路径,请使用修复程序更新我的答案。这是为了澄清将
System.setProperty
行移到
环境
块之外对我有效。非常感谢。我试过你的建议了。同样的错误也发生了。我使用的是旧版本的想法。我将升级并重试。一个问题:如果我真的让它工作了,这是否意味着我必须对每个规范文件重复这个?我宁愿避免重复。最终可能会有20个规范文件。(shell脚本选项将涵盖这一点,但只有在我使用mvn的情况下)您可以在运行/调试配置中创建一个“默认值”,这意味着当您通过右键单击>运行在IntelliJ中运行测试时,它将使用默认配置。这将允许您仅在一个位置进行上述设置。如果您希望继续在配置中设置路径,请使用修复程序更新我的答案。这是为了澄清将
System.setProperty
行移到
环境
块之外对我有效。非常感谢。