这就是我的所有测试所在的位置,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
结果是一切都不存在,只是下面的一个示例错误。
IntelliJ-IDEA实际上有一个内置终端,您可以在项目级别运行maven命令。只需点击最底部的“终端”按钮。如果你没看到,试试“ALT+F12”。如果您的终端被禁用,按两次Shift,键入“终端”并打开它。
从那里,您可以运行maven命令。有效的生命周期阶段是:
<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终端是 看看