Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何从Selenium/TestNG java文件中使用IntelliJ生成可执行jar文件?_Java_Selenium_Intellij Idea_Jar_Executable Jar - Fatal编程技术网

如何从Selenium/TestNG java文件中使用IntelliJ生成可执行jar文件?

如何从Selenium/TestNG java文件中使用IntelliJ生成可执行jar文件?,java,selenium,intellij-idea,jar,executable-jar,Java,Selenium,Intellij Idea,Jar,Executable Jar,我已经在谷歌上搜索了好几天,试图找出如何做到这一点,如果以前有人这样做过,我将非常感谢您的帮助 我有一个我在IntelliJ中创建的自动化测试项目,它可以自动化用户与Web应用程序的交互 我想将自动测试(用Java创建,使用Selenium和TestNG)放入一个可执行的jar文件中,其他人可以通过双击jar文件来运行该文件 每次我试图通过导航到Project Structure->Artifact->+->jar->From modules with dependenciencies来创建一个

我已经在谷歌上搜索了好几天,试图找出如何做到这一点,如果以前有人这样做过,我将非常感谢您的帮助

我有一个我在IntelliJ中创建的自动化测试项目,它可以自动化用户与Web应用程序的交互

我想将自动测试(用Java创建,使用Selenium和TestNG)放入一个可执行的jar文件中,其他人可以通过双击jar文件来运行该文件

每次我试图通过导航到Project Structure->Artifact->+->jar->From modules with dependenciencies来创建一个jar文件时,它最终会创建一个声明它的jar

"Could not find or load the main class <package.MainClass> "
“无法找到或加载主类”
当我尝试使用以下命令运行它时:

java -jar MyProject.jar <Manifest Path>
java-jar MyProject.jar
你知道为什么我会不断地犯这个错误,或者有办法成功地做到这一点吗

另外,下面是我的pom.xml:

<groupId>TestAutomation</groupId>
<artifactId>TestAutomation</artifactId>
<version>1.0-SNAPSHOT</version>

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-assembly-plugin</artifactId>
            <configuration>
                <archive>
                    <manifest>
                        <addClasspath>true</addClasspath>
                        <mainClass>com.test.automation.Executable</mainClass>
                    </manifest>
                </archive>
                <descriptorRefs>
                    <descriptorRef>jar-with-dependencies</descriptorRef>
                </descriptorRefs>
            </configuration>
        </plugin>
    </plugins>
</build>

<dependencies>
    <dependency>
        <groupId>org.seleniumhq.selenium</groupId>
        <artifactId>selenium-server</artifactId>
        <version>2.39.0</version>
    </dependency>
    <dependency>
        <groupId>org.seleniumhq.selenium</groupId>
        <artifactId>selenium-java</artifactId>
        <version>2.40.0</version>
    </dependency>
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.11</version>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>org.testng</groupId>
        <artifactId>testng</artifactId>
        <version>6.1.1</version>
        <scope>test</scope>
    </dependency>
</dependencies>
测试自动化
遗嘱自动化
1.0-快照
org.apache.maven.plugins
maven汇编插件
真的
com.test.automation.Executable
带有依赖项的jar
org.seleniumhq.selenium
硒服务器
2.39.0
org.seleniumhq.selenium
硒爪哇
2.40.0
朱尼特
朱尼特
4.11
测试
org.testng
testng
6.1.1
测试

我终于为遇到这个问题的其他人找到了答案,这就是我创建jar文件并成功运行的方法

我必须将pom.xml文件更改为以下内容:

<groupId>TestAutomation</groupId>
<artifactId>TestAutomation</artifactId>
<packaging>jar</packaging>
<version>1.0-SNAPSHOT</version>
<url>http://maven.apache.org</url>

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
        </plugin>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-jar-plugin</artifactId>
            <configuration>
                <archive>
                    <manifest>
                        <addClasspath>true</addClasspath>
                        <mainClass>com.test.automation.Executable</mainClass>
                    </manifest>
                </archive>
            </configuration>
        </plugin>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
        </plugin>
    </plugins>
</build>
<dependencies>
    <dependency>
        <groupId>org.seleniumhq.selenium</groupId>
        <artifactId>selenium-java</artifactId>
        <version>2.40.0</version>
    </dependency>
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.11</version>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>org.testng</groupId>
        <artifactId>testng</artifactId>
        <version>6.1.1</version>
        <scope>test</scope>
    </dependency>
</dependencies>
最后,以下是创建适当jar文件的步骤:

  • 选择文件>项目结构。。。从顶部菜单
  • 选择左侧菜单上的“工件”,然后单击“+”
  • 从具有依赖项的模块中选择Jar>
  • 使用浏览按钮选择主类
  • 单击“提取到目标jar”旁边的单选按钮,然后单击“确定”
  • 单击“+”,然后选择“模块测试输出”
  • 在右侧的Available Elements窗格中,展开项目名称并选择所有Maven文件,然后将它们移动到左侧窗格中正在创建的jar目录中
  • 单击“确定”
  • 选择构建>构建工件。。。从顶部菜单
  • 将鼠标悬停在创建的jar上,然后单击Actions下的“Build”
  • 注:

  • 请确保将IE或Chrome驱动程序添加到您的“项目资源”文件夹中,并通过“代码”文件夹而不是计算机硬盘来调用它。例如,请执行以下操作:

    File File=新文件(“src\test\resources\binaries\IEDriverServer.exe”)

  • 不是这个:

    File file = new File
    ("C:\\Users\\<Username>\\<Proj Name>\\src\\test\\java\\src\\
      test\\resources\\binaries\\IEDriverServer.exe");
    

    二,。如果使用IE,请确保为所有区域或所有区域都设置了保护模式(在IE中,转到Internet选项…>安全性(选项卡)>启用保护模式复选框)

    希望这对处于相同情况下的任何其他人都有帮助!:-)这正是我想做的。我仍然缺少一些细节。你能把你的舱单寄出去吗?还有你项目的框架?我想弄清楚的是,您是将测试转移到主源中,还是将它们留在测试中?您的公共静态void main(String[]args)是什么。。看起来像谢谢谢谢你urbanaut,我也在寻找类似的解决方案,我是新手,不确定我应该在我的主方法中放什么,在我使用你在我的主方法中提到的相同代码之前,但当我创建可执行jar时,它不起作用,抱怨“找不到或加载主类”不知道如何解决。从你们的步骤中,我有几个问题1。我应该在main方法中添加什么来运行测试?2.在你的第6步和第7步中,我不清楚,你能详细说明一下吗?如果可以的话,截图会很好。3.如何运行这个jar以便调用我的testng测试?请提供您的宝贵意见。感谢
    File file = new File
    ("C:\\Users\\<Username>\\<Proj Name>\\src\\test\\java\\src\\
      test\\resources\\binaries\\IEDriverServer.exe");
    
    src
    TestAutomation.jar