当前位置: 首页 > 知识库问答 >
问题:

如何使用Maven在IntelliJ Idea上使用终端运行?

赫连鸿振
2023-03-14

这就是我的所有测试所在的位置,C:\users\ereyne\ideaprojects\ioappium\src\test\java\io

测试地点

我已经在谷歌上看,但都是在高水平,谁能提供我一步一步的过程如何做到这一点?测试java类

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>io.appium</groupId>
    <artifactId>io.appium</artifactId>
    <version>1.0-SNAPSHOT</version>

    <dependencies>
        <!-- https://mvnrepository.com/artifact/io.appium/java-client -->
        <dependency>
            <groupId>io.appium</groupId>
            <artifactId>java-client</artifactId>
            <version>7.0.0</version>
        </dependency>

        <!-- https://mvnrepository.com/artifact/org.seleniumhq.selenium/selenium-java -->
        <dependency>
            <groupId>org.seleniumhq.selenium</groupId>
            <artifactId>selenium-java</artifactId>
            <version>3.141.59</version>
        </dependency>

        <!-- https://mvnrepository.com/artifact/org.testng/testng -->
        <dependency>
            <groupId>org.testng</groupId>
            <artifactId>testng</artifactId>
            <version>6.14.3</version>
            <scope>test</scope>
        </dependency>

        <!-- https://mvnrepository.com/artifact/commons-lang/commons-lang -->
        <dependency>
            <groupId>commons-lang</groupId>
            <artifactId>commons-lang</artifactId>
            <version>2.6</version>
        </dependency>
    </dependencies>

</project>
//package io;//package appium;

import io.appium.java_client.remote.AndroidMobileCapabilityType;
import io.appium.java_client.android.AndroidDriver;
import io.appium.java_client.android.AndroidElement;
import io.appium.java_client.MobileElement;
import io.appium.java_client.remote.MobileCapabilityType;
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.WebDriverWait;
import org.openqa.selenium.remote.DesiredCapabilities;
import org.openqa.selenium.By;
import org.testng.annotations.AfterMethod;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
import java.net.URL;
import java.net.MalformedURLException;

public class appium {

public AndroidDriver<MobileElement> driver;
public WebDriverWait wait;
DesiredCapabilities dc = new DesiredCapabilities();
int CustomerNumber = 10088214;
int AccessCode = 44445555;
String SignIn = "/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.webkit.WebView/android.webkit.WebView/android.view.View/android.view.View/android.view.View[1]/android.view.View/android.view.View/android.view.View/android.view.View[2]/android.widget.Button[3]";
String MakeaPayment = "/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.webkit.WebView/android.webkit.WebView/android.view.View/android.view.View/android.view.View[1]/android.view.View/android.view.View/android.view.View[2]/android.view.View[2]/android.widget.Button[4]";

@BeforeMethod
public void setUp() throws MalformedURLException {
    dc.setCapability("deviceName", "Pixel XL API 28");
    dc.setCapability("udid", "ce041714789604830d"); //DeviceId from "adb devices" command //Tab S3-674ce8f9 S8-ce041714789604830d
    dc.setCapability("platformName", "Android");
    dc.setCapability("platformVersion", "9.0");
    dc.setCapability("skipUnlock","true");
    dc.setCapability("appPackage", "com.loans.smartmoney");
    dc.setCapability("appActivity","com.loans.smartmoney.MainActivity");
    dc.setCapability("noReset","true");
    dc.setCapability("automationName", "UiAutomator2");
    driver = new AndroidDriver<MobileElement>(new URL("http://127.0.0.1:4723/wd/hub"),dc);
    wait = new WebDriverWait(driver, 30);
}

@Test
public void testLoginTest() {

    //Login
    wait.until(ExpectedConditions.visibilityOfElementLocated
            (By.xpath(SignIn)));
    driver.findElement(By.xpath(SignIn)).click();

    driver.findElement(By.className("android.view.View")).click();
    driver.findElement(By.className("android.widget.EditText")).sendKeys(String.valueOf(CustomerNumber));
    driver.findElements(By.className("android.widget.EditText")).get(1).click();
    driver.findElements(By.className("android.widget.EditText")).get(1).sendKeys(String.valueOf(AccessCode));
    driver.findElements(By.className("android.widget.Button")).get(1).click();

    wait.until(ExpectedConditions.visibilityOfElementLocated
            (By.xpath(MakeaPayment)));
}

@AfterMethod
public void tearDown() {
    driver.quit();
}
}

错误:[ERROR]未知的生命周期阶段“appium.java”。您必须以下列格式指定有效的生命周期阶段或目标:或:[:]:。可用的生命周期阶段有:验证、初始化、生成E源、流程源、生成资源、流程资源、编译、流程类、生成测试源、流程测试源、生成测试资源、流程测试资源、测试编译、流程测试类、测试、准备包、包、预集成测试、集成测试、集成后测试、验证、安装、部署、预清理、清理、清理后、站点前、站点后、站点后、站点部署。->[Help 1][ERROR][ERROR]要查看错误的完整堆栈跟踪,请使用-e开关重新运行Maven。[ERROR]使用-x开关重新运行Maven以启用完全调试日志记录。[ERROR][ERROR]有关错误和可能解决方案的更多信息,请阅读以下文章:

我还尝试在我的终端中运行它:C:\users\ereyne\ideaprojects\ioappium\src\test\java\io>javac appium.java

结果是一切都不存在,只是下面的一个示例错误。

共有1个答案

曹普松
2023-03-14

IntelliJ-IDEA实际上有一个内置终端,您可以在项目级别运行maven命令。只需点击最底部的“终端”按钮。如果你没看到,试试“ALT+F12”。如果您的终端被禁用,按两次Shift,键入“终端”并打开它。

从那里,您可以运行maven命令。有效的生命周期阶段是:

  • 清理
  • 验证
  • 编译
  • 测试
  • 验证
  • 安装
  • 站点
  • 部署
    null
<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.8.0</version>
            <configuration>
                <source>8</source>
                <target>8</target>
            </configuration>
        </plugin>
        <!-- https://mvnrepository.com/artifact/org.apache.maven.plugins/maven-surefire-plugin -->
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <version>3.0.0-M3</version>
        </plugin>
    </plugins>
</build>

“源”和“目标”表示我的项目使用的Java版本。这些插件允许我将我的项目作为maven项目运行,并在生命周期的不同实例中发生特定的事情。

在我的例子中,在“验证”阶段,maven会触发我的一个插件来记录结果,并创建一个报告。

如果您得到错误

mvn -v
Apache Maven 3.6.0 (97c98ec64a1fdfee7767ce5ffb20918da4f719f3; 2018-10-24T14:41:47-04:00)
Maven home: C:\Program Files\apache-maven-3.6.0\bin\..
Java version: 1.8.0_201, vendor: Oracle Corporation, runtime: C:\Program Files\Java\jdk1.8.0_201\jre
Default locale: en_US, platform encoding: Cp1252
OS name: "windows 10", version: "10.0", arch: "amd64", family: "windows"
package Runner;

import cucumber.api.CucumberOptions;
import cucumber.api.testng.AbstractTestNGCucumberTests;


@CucumberOptions(
        plugin = {"pretty", "html:target/cucumber-pretty", "json:target/Cucumber.json"},
        features = {"src/test/resources/Features"},
        glue = {"StepDefinitions"},
        tags = {"@smoke"},
        monochrome = true
)
public class AppiumTest extends AbstractTestNGCucumberTests {


}

正如您所看到的,我的测试类中没有任何代码,只是指向我构建的特定测试,并执行这些测试。在使用TestNG作为测试套件的情况下,它看起来会有很大的不同,并且更容易理解正在测试的内容,但是请检查这些资源以确保您理解要做什么。

https://testng.org/doc/documentation-main.html#testng-xml https://howtodoinjava.com/testng/how-to-execute-testng-with-maven-build/

根据您的答复,很可能您已经构建了一个TestNG套件,只需要将其绑定到Maven中。

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>groupID</groupId>
    <artifactId>MobileAutomation</artifactId>
    <version>1.0-SNAPSHOT</version>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.8.0</version>
                <configuration>
                    <source>8</source>
                    <target>8</target>
                </configuration>
            </plugin>
            <plugin>
                <groupId>net.masterthought</groupId>
                <artifactId>maven-cucumber-reporting</artifactId>
                <version>4.6.0</version>
                <executions>
                    <execution>
                        <id>execution</id>
                        <phase>verify</phase>
                        <goals>
                            <goal>generate</goal>
                        </goals>
                        <configuration>
                            <projectName>Test</projectName>
                            <outputDirectory>${project.build.directory}/cucumber-report-html</outputDirectory>
                            <inputDirectory>${project.build.directory}</inputDirectory>
                            <jsonFiles>
                                <param>Cucumber.json</param>
                            </jsonFiles>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
            <!-- https://mvnrepository.com/artifact/org.apache.maven.plugins/maven-surefire-plugin -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
                <version>3.0.0-M3</version>
                <configuration>
                    <failIfNoSpecifiedTests>false</failIfNoSpecifiedTests>
                    <failIfNoTests>false</failIfNoTests>
                    <testFailureIgnore>true</testFailureIgnore>
                </configuration>
            </plugin>
        </plugins>
    </build>


    <dependencies>
        <!-- https://mvnrepository.com/artifact/io.cucumber/cucumber-java -->
        <dependency>
            <groupId>io.cucumber</groupId>
            <artifactId>cucumber-java</artifactId>
            <version>4.3.0</version>
        </dependency>

        <!-- https://mvnrepository.com/artifact/io.cucumber/cucumber-picocontainer -->
        <dependency>
            <groupId>io.cucumber</groupId>
            <artifactId>cucumber-picocontainer</artifactId>
            <version>4.3.0</version>
            <scope>test</scope>
        </dependency>

        <!-- https://mvnrepository.com/artifact/io.cucumber/cucumber-junit -->
        <dependency>
            <groupId>io.cucumber</groupId>
            <artifactId>cucumber-junit</artifactId>
            <version>4.3.0</version>
            <scope>test</scope>
        </dependency>

        <!-- https://mvnrepository.com/artifact/io.cucumber/cucumber-testng -->
        <dependency>
            <groupId>io.cucumber</groupId>
            <artifactId>cucumber-testng</artifactId>
            <version>4.3.0</version>
        </dependency>

        <!-- https://mvnrepository.com/artifact/org.junit.jupiter/junit-jupiter-api -->
        <dependency>
            <groupId>org.junit.jupiter</groupId>
            <artifactId>junit-jupiter-api</artifactId>
            <version>5.5.0-M1</version>
            <scope>test</scope>
        </dependency>

        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
            <scope>compile</scope>
        </dependency>

        <dependency>
            <groupId>org.testng</groupId>
            <artifactId>testng</artifactId>
            <version>6.14.3</version>
        </dependency>

        <!-- https://mvnrepository.com/artifact/io.appium/java-client -->
        <dependency>
            <groupId>io.appium</groupId>
            <artifactId>java-client</artifactId>
            <version>7.0.0</version>
        </dependency>

        <!-- https://mvnrepository.com/artifact/org.seleniumhq.selenium/selenium-java -->
        <dependency>
            <groupId>org.seleniumhq.selenium</groupId>
            <artifactId>selenium-java</artifactId>
            <version>3.141.59</version>
        </dependency>
    </dependencies>
</project>

正如您所看到的,在我的pom.xml中,我有一个插件,它在Maven的“验证”阶段生成测试报告。当我要运行测试时,我将运行

mvn clean verify

这将清除所有旧的测试结果,并运行maven“验证”循环。Verify将运行我指定的测试,然后根据测试的结果,maven构建将成功或失败。

如果您看到一个maven构建失败,这并不意味着您的代码执行失败,而是意味着maven有一个构建失败的原因。阅读特定的maven插件和生命周期阶段,了解导致构建失败的原因,以及maven的行为。

 类似资料:
  • 我尝试在Intellijidea中打开Maven项目。这个项目使用了spark和Scala。当我跑的时候: 则会给出错误: [错误]无法执行目标org.scalastyle:scalastyle-maven-plugin:0.7.0:项目spark-mllib_2.10:scalastyle执行期间失败:您有50个scalastyle冲突 我认为问题出在Maven的版本上。实际上,在Intelli

  • 我想执行“vim”命令,“vim”命令用于在linux中打开一个新编辑器。“setup.csh”用QProcess打开文件“vi”editör。我想使用gui运行这个命令。 linux终端命令:“vim/home/intern2/elif/Project/setup.csh”。如何运行此命令gui 我在Qt中编写了以下命令,但在使用QProcess时它不起作用。 不幸的是,我给出了以下错误消息 错

  • 问题内容: 我阅读了Xcode 6的新增功能。本文介绍了有关Xcode 6的一些新功能,并说: 命令行 Xcode的调试器包括Swift语言的交互式版本,称为REPL(Read-Eval-Print- Loop)。使用Swift语法来评估正在运行的应用程序并与之交互,或者在类似脚本的环境中编写新代码。REPL可从Xcode控制台的LLDB或Terminal中获得。 我想知道如何获得REPL? 问题

  • 有没有办法强制VS Code只使用python3?无论我尝试什么,它总是默认为python2.7。我尝试选择正确的解释器作为python3.7。当我打开终端时,它立即使用python2.7,在设置中它指向3.7,但是内置的终端很好,总是默认为2.7。

  • 我正在尝试使用QT的NFC模块读取我的Android手机上的NFC标签。 根据这一页面,Qt将从5.6版本开始在Android上支持NFC。这个版本还没有发布,所以我按照本页上的说明,从源代码处构建了它,并将它安装在Qt Creator中。 我一定是错过了什么... 更新1 似乎需要修改AndroidManifest.xml文件。我尝试了不同的方法,但似乎都没有产生预期的效果。只有当清单定义如下所

  • 问题内容: 这应该很简单,但是我以前从未做过,也没有找到任何解决方案。 我目前正在使用Eclipse编写程序代码,该程序会导入一些外部JAR库,例如google data api库。我可以使用Eclipse来编译/构建/运行程序。 但是现在我想在终端中运行它,那么我应该将那些JAR文件放在哪里,以及如何构建和运行该程序? 谢谢! 问题答案: 你可以做 : 1) 2) 因此,假设您的in终端是 看看