我正在使用appium(v1.10.0)在平台版本为12.1.3的真实设备(iPhone 6s)上使用Xcode 10.1在macOS(10.13.6)上自动化iOS本机应用程序。当我启动appium服务器并启动会话时,该应用程序将在设备中打开。一旦我在eclipse中运行代码以将用户名发送到应用程序的登录页面,移动键盘就无法打开,因此sendkeys()无法正常工作。
在sendkeys()之前尝试过getKeyboard()。错误仍然存在。下面是我尝试过的代码。
DesiredCapabilities cap = new DesiredCapabilities();
cap.setCapability("device", "iPhone");
cap.setCapability("deviceName", "iPhone 6s");
cap.setCapability("platformVersion", "12.1.3");
cap.setCapability("platformName", "iOS");
cap.setCapability("app","/Users/TP/Desktop/SampleApp.ipa" );
cap.setCapability("udid", "xxxxxxxxxxxxxxxxxxx");
cap.setCapability("automationName", "XCUITest");
cap.setCapability("xcodeOrgId", "xxxxxxxx");
cap.setCapability("xcodeSigningId", "xxxxxxxx");
driver = new IOSDriver(new URL("http://127.0.0.1:4723/wd/hub"), cap);
driver.findElement(By.xpath("//XCUIElementTypeApplication[@name=\"TBI\"]")).click();
driver.getKeyboard().sendKeys("abc");
手机键盘没有打开,因此引发以下错误。
org.openqa.selenium.WebDriverException:处理命令时发生未知服务器端错误。
原始错误:错误Domain = com.facebook.WebDriverAgent代码= 1“仅支持'指针'类型的操作。为ID为'键盘'的操作提供了'键'代替” UserInfo = {NSLocalizedDescription =仅操作支持“指针”类型。而是给ID为“ keyboard”的操作指定“ key”}
答案 0 :(得分:0)
您无需使用getKeyboard()
,您可以将值直接发送到字段
答案 1 :(得分:0)
发送键将一系列击键发送到元素。 您可以替换以下两行
driver.findElement(By.xpath("//XCUIElementTypeApplication[@name=\"TBI\"]")).click();
driver.getKeyboard().sendKeys("abc");
使用
MobileElement mobileElement = driver.findElement(By.xpath("//XCUIElementTypeApplication[@name=\"TBI\"]"));
mobileElement.sendKeys("abc");
答案 2 :(得分:0)
试试这个。为我工作:
IWebElement currentElement = driver.SwitchTo().ActiveElement();
currentElement.SendKeys("any text");