我正在使用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服务器的情况下杀死模拟器的原因,那么这也将有助于解决我的问题。
答案 0 :(得分:1)
Appium不允许您终止仿真器实例。但是您可以使用adb将其关闭。将类似以下内容的代码整合到您的拆卸代码中。
OPP
答案 1 :(得分:0)
对于Mac用户,代码:
System.Diagnostics.Process.Start("CMD.exe",cmdstr);
将不起作用,因为系统无法识别System.Diagnostics命令。
相反,您可以使用以下代码杀死Mac上当前正在运行的仿真器:
cmdstr = "adb -s emulator-5554 emu kill";
try {
Runtime.getRuntime().exec(cmdstr);
} catch (IOException e) {
e.printStackTrace();
}
这将在终端中运行命令字符串(cmdstr),并杀死具有给定序列号(emulator-5554)的当前正在运行的仿真器