【问题标题】:Appium iOS driver can't send keys to UIATextFieldAppium iOS 驱动程序无法将密钥发送到 UIATextField
【发布时间】:2016-06-14 01:30:54
【问题描述】:

我正在使用 Appium 1.4.13、java-client-3.3.0.jar、selenium 独立服务器 2.48.2 和 IntelliJ。

我想向 UIATextField 输入一个值,它是一个数字选择器。我读了一个教程,它建议:

(MobileElement) iosDriver.findElement(By.xpath("//UIATextField")).sendKeys("abcdef");

但这不起作用:它只是从 iOS 中打开了一个本机数字选择器

另一个建议是对 java 客户端 2.2.0 使用 setValue:

(MobileElement) iosDriver.findElement(By.xpath("//UIATextField")).setValue("abcdef");

但是 setValue 方法已经不存在了。

所以我有一个像下面这样的解决方法并且它有效:

(MobileElement) iosDriver.findElement(By.xpath("//UIATextField")).click;
iosDriver.scrollToExact("abcdef");
//click confirm

我的问题:

  • setValue 和 sendKeyEvents 不再可用?
  • 有没有更好的方法来输入值并确认?

谢谢

这是我运行时从 Appium Inspector 得到的结果

(MobileElement) iosDriver.findElement(By.xpath("//UIATextField")).sendKeys("170");

【问题讨论】:

  • @nullpointer:感谢您抽出宝贵时间,我设法使它与 setValue 一起工作。再次感谢:)

标签: ios selenium automated-tests appium appium-ios


【解决方案1】:

您使用 appium 3.3.0 java-client 的初始代码应该可以正常工作,只是您的输入有点不正确。需要注意的是,数字选择器定义了一个正则表达式来获取整数类型的输入,因此您可以更好地尝试向其发送数字输入。试试这个,会有所帮助:

(MobileElement) iosDriver.findElement(By.xpath("//UIATextField")).sendKeys("12"); //sending an integer value

【讨论】:

  • 我尝试过使用 Integer,但我仍然遇到同样的问题:我打开数字选择器并保持这种状态直到超时
  • 是的,这是我在我的问题中的解决方法:我可以单击此文本字段,然后显示 numberpicker,我使用方法 scrollToExact("12"),并确认。有效。但是我想知道为什么我不能使用sendKeys,这很奇怪,因为我阅读的所有教程都建议使用sendKeys
  • 是的,确实更好的方法是 sendKeys,您能否与 UIATextField selected 分享 appium 检查器的屏幕截图
  • 哦,现在它可以与 sendKeys 一起使用,但是以一种奇怪的方式:它在文本字段之外输入了数值“170”并且有点破坏了应用程序布局,并且数字选择器仍然显示。 Appium 检查员以绿色文本显示并通过了该操作。更新了我的问题
  • 应用程序表单 appium 检查器的屏幕截图将有助于调查此问题
【解决方案2】:

setValue 更改为仅对 IOSElement 有效。相应地投射你的元素,它应该可以工作。 例如:(IOSElement) iosDriver.findElement(By.xpath("//UIATextField")).setValue("abcdef");

来源:https://github.com/appium/java-client/blob/master/src/main/java/io/appium/java_client/ios/IOSElement.java

【讨论】:

    【解决方案3】:

    我正在开发 Xamrin 应用程序,而 Appium iOS 驱动程序无法使用 @iOSXCUITFindBy 向 UIATextField 发送密钥。尽管在 Android 上相同的功能工作正常。

    我将函数修改为首先单击,这样我就可以在 webview 中输入用户名和密码。

    public void enterUsername(String userName)
    
            {
                this.userName.click();
                this.userName.sendKeys(userName);
            }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-05-20
      • 1970-01-01
      • 2016-11-28
      • 2018-11-12
      • 1970-01-01
      • 1970-01-01
      • 2015-12-18
      相关资源
      最近更新 更多