我正在使用Appium在Android模拟器上运行自动化测试。测试完成后,我似乎无法关闭模拟器。我所做的研究似乎指向_driver.Quit();
可以关闭模拟器,但它仍然在运行。
我应该如何在运行测试后关闭模拟器?
代码:
[TestClass]
public class UnitTest
{
AndroidDriver<AndroidElement> _driver;
private static Uri testServerAddress = new Uri("http://127.0.01:4723/wd/hub");
private static TimeSpan INIT_TIMEOUT_SEC = TimeSpan.FromSeconds(180);
[TestInitialize]
public void BeforeAll()
{
DesiredCapabilities cap = new DesiredCapabilities();
cap.SetCapability("avd", "Device_01_Oreo_1440x2560");
cap.SetCapability("deviceName", "Device 01 Oreo_1440x2560");
cap.SetCapability("platformName", "Android");
cap.SetCapability("platformVersion", "8.1.0");
cap.SetCapability("udid", "emulator-5554");
cap.SetCapability("appPackage", "appPackage");
cap.SetCapability("appActivity", "appActivity");
cap.SetCapability("unicodeKeyboard", true);
cap.SetCapability("resetKeyboard", true);
_driver = new AndroidDriver<AndroidElement>(testServerAddress, cap, INIT_TIMEOUT_SEC);
}
[TestMethod]
public void Test_Open_Mobile_App()
{
_driver.FindElement(MobileBy.XPath("//android.widget.EditText[@index='0' and @password='false']")).SendKeys("EmailAddress");
_driver.FindElement(MobileBy.XPath("//android.widget.EditText[@index='0' and @password='true']")).SendKeys("Password");
}
[TestCleanup]
public void AfterAll()
{
_driver.CloseApp();
_driver.Quit();
}
}
编辑:
我刚刚尝试了以下方法,通过终止模拟器进程来完成此任务:
Regex regex = new Regex(@"qemu-system.*");
foreach (Process p in Process.GetProcesses("."))
{
if (regex.Match(p.ProcessName).Success)
{
p.Kill();
}
}
关闭 Android 模拟器会同时关闭 Appium 服务器,因此无法测试连续设备。如果有一种方法可以关闭模拟器而不关闭 Appium 服务器,则可以解决这个问题。