Appium - 未安装 AUT
Appium - AUT is not installed
我正在测试 iOS 应用程序(在真实设备上)并遇到以下错误:
org.openqa.selenium.SessionNotCreatedException: Unable to create a new remote session. Please check the server log for more details. Original error: AUT is not installed. (WARNING: The server did not provide any stacktrace information).
如果有人能指出 Selenium 抛出此错误的原因,将会很有帮助。我能够手动连接到 UFT 移动设备并且它工作正常。
我的代码是:
import io.appium.java_client.ios.IOSDriver;
import io.appium.java_client.ios.IOSElement;
import io.appium.java_client.remote.MobileCapabilityType;
import io.appium.java_client.remote.IOSMobileCapabilityType;
import org.openqa.selenium.remote.DesiredCapabilities;
import org.testng.annotations.AfterTest;
import org.testng.annotations.BeforeSuite;
import org.testng.annotations.Test;
import java.net.URL;
import java.net.MalformedURLException;
import java.util.concurrent.TimeUnit;
// extends BaseTest_MobileScripts
public class AppTest {
public static IOSDriver<IOSElement> appDriver;
public static DesiredCapabilities capabilities;
@BeforeSuite
public void setupAppium() throws MalformedURLException {
capabilities = new DesiredCapabilities();
capabilities.setCapability(MobileCapabilityType.DEVICE_NAME, "iPhone X");
capabilities.setCapability(MobileCapabilityType.PLATFORM_NAME, "iOS");
capabilities.setCapability(MobileCapabilityType.PLATFORM_VERSION, "13.7");
capabilities.setCapability("userName", "username");
capabilities.setCapability("password", "password");
capabilities.setCapability(IOSMobileCapabilityType.BUNDLE_ID, "abc.def.geh");
appDriver = new IOSDriver<IOSElement>(new URL("http://127.0.0.1:8443/wd/hub"), capabilities);
appDriver.manage().timeouts().implicitlyWait(2, TimeUnit.SECONDS);
appDriver.resetApp();
}
@AfterTest
private static void afterTest() {
appDriver.resetApp(); // Clear all the application data and permissions.
appDriver.quit(); // End Appium session.
}
@Test (enabled=true) public void myFirstTest() throws InterruptedException {
appDriver.resetApp();
}
}
此处附有部分堆栈跟踪 https://pastebin.com/npcDyz2a。
经过多次尝试,我终于找到了适合我的解决方案!!
当显示权限弹出窗口(如访问摄像头或存储的权限)时,会发生此错误。
如果你不在自动化中给予权限,当一个测试失败并开始下一个时,弹出窗口不会消失,当 Appium 试图找到你的应用程序时,它找不到,因为权限弹出窗口与您的应用程序重叠。
尝试找出哪个测试需要一些权限并添加一个步骤来授予此权限。
在我的例子中,项目中的某个人删除了这一步,这给了相机权限,因此,我的 CI 管道开始崩溃,当我回到代码的这一步时,这个错误停止发生。
我正在测试 iOS 应用程序(在真实设备上)并遇到以下错误:
org.openqa.selenium.SessionNotCreatedException: Unable to create a new remote session. Please check the server log for more details. Original error: AUT is not installed. (WARNING: The server did not provide any stacktrace information).
如果有人能指出 Selenium 抛出此错误的原因,将会很有帮助。我能够手动连接到 UFT 移动设备并且它工作正常。
我的代码是:
import io.appium.java_client.ios.IOSDriver;
import io.appium.java_client.ios.IOSElement;
import io.appium.java_client.remote.MobileCapabilityType;
import io.appium.java_client.remote.IOSMobileCapabilityType;
import org.openqa.selenium.remote.DesiredCapabilities;
import org.testng.annotations.AfterTest;
import org.testng.annotations.BeforeSuite;
import org.testng.annotations.Test;
import java.net.URL;
import java.net.MalformedURLException;
import java.util.concurrent.TimeUnit;
// extends BaseTest_MobileScripts
public class AppTest {
public static IOSDriver<IOSElement> appDriver;
public static DesiredCapabilities capabilities;
@BeforeSuite
public void setupAppium() throws MalformedURLException {
capabilities = new DesiredCapabilities();
capabilities.setCapability(MobileCapabilityType.DEVICE_NAME, "iPhone X");
capabilities.setCapability(MobileCapabilityType.PLATFORM_NAME, "iOS");
capabilities.setCapability(MobileCapabilityType.PLATFORM_VERSION, "13.7");
capabilities.setCapability("userName", "username");
capabilities.setCapability("password", "password");
capabilities.setCapability(IOSMobileCapabilityType.BUNDLE_ID, "abc.def.geh");
appDriver = new IOSDriver<IOSElement>(new URL("http://127.0.0.1:8443/wd/hub"), capabilities);
appDriver.manage().timeouts().implicitlyWait(2, TimeUnit.SECONDS);
appDriver.resetApp();
}
@AfterTest
private static void afterTest() {
appDriver.resetApp(); // Clear all the application data and permissions.
appDriver.quit(); // End Appium session.
}
@Test (enabled=true) public void myFirstTest() throws InterruptedException {
appDriver.resetApp();
}
}
此处附有部分堆栈跟踪 https://pastebin.com/npcDyz2a。
经过多次尝试,我终于找到了适合我的解决方案!!
当显示权限弹出窗口(如访问摄像头或存储的权限)时,会发生此错误。
如果你不在自动化中给予权限,当一个测试失败并开始下一个时,弹出窗口不会消失,当 Appium 试图找到你的应用程序时,它找不到,因为权限弹出窗口与您的应用程序重叠。
尝试找出哪个测试需要一些权限并添加一个步骤来授予此权限。
在我的例子中,项目中的某个人删除了这一步,这给了相机权限,因此,我的 CI 管道开始崩溃,当我回到代码的这一步时,这个错误停止发生。