使用Appium在iOS真实设备中无法使用Sendkeys

时间:2019-01-30 05:39:18

标签: ios appium native

我正在使用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”}

3 个答案:

答案 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");