当前位置: 首页 > 知识库问答 >
问题:

Android-sendkeys to EditText的Appium也可以输入默认文本

公羊信厚
2023-03-14

我试图用Appium for Android为Wordpress Mobile编写一些自动化测试(https://github.com/wordpress-mobile/wordpress-android)。

我要做的第一件事是在主登录屏幕中输入用户名,以便能够登录到我的Wordpress站点,而我在“用户名”字段上的SendKeys有问题。

以下是该元素在UIAutomatorViewer中的显示方式:

List<WebElement> textFieldsList = driver.findElementsByClassName("android.widget.EditText");
WebElement login = textFieldsList.get(0);       
login.sendKeys("username");
driver.findElementsByClassName("android.widget.EditText").get(0).sendKeys("username");
driver.findElement(By.xpath("//android.widget.EditText[@text='Editing. Username or email. ']")).sendKeys("username");

所以,似乎占位符文本也被保留,然后我的用户名被添加。

请注意,当我用appium发送用户名时添加的文本最初并不存在(参见屏幕截图),但在UI树视图中,它似乎是edittext中的文本。当Appium运行测试时,它实际上是在添加我自己的用户名之前编写“edition.Username或email”文本。

我也尝试过,正如这里另一个问题的答案之一所建议的:Appium:Clear a field以下代码,其中sendKeyEvent(67)应该清除该字段:

List<WebElement> textFieldsList = driver.findElementsByClassName("android.widget.EditText");
WebElement login = textFieldsList.get(0);
login.click();
driver.sendKeyEvent(67);
login.sendKeys("username");
        String setUsername = "username";
        login.click();
        login.sendKeys(setUsername);

        // hack to delete extra text that gets typed
        int stringLength = login.getText().length() - setUsername.length();
        for (int i = 0; i < setUsername.length(); i++) {
            driver.sendKeyEvent(21); //KEYCODE_DPAD_LEFT
        }
        for (int i = 0; i < stringLength; i++) {
            driver.sendKeyEvent(67); // "KEYCODE_DEL
        }

我错过了什么?如有任何帮助,将不胜感激。我试着理解为什么要打额外的文本。

共有1个答案

宗安宁
2023-03-14

经过大量查找,我发现这确实是Appium v 1.2.2中的一个bug:

https://discuss.appium.io/t/android-appium-1-2-2-sendkeys-issue-with-Hinted-edit-text/309

希望,就像那里所说的,它会在1.2.3版本中被修复。

 类似资料:
  • 在angularJs中,我有一个输入文本框,如何设置默认值?我尝试了但失败了。

  • 在此对话框,您可以输入默认的密码,这可应用在添加、解压、测试和查看选项时。 如果“显示密码”选项被禁用并且压缩文档操作时需要密码,您将会被要求输入密码两次来进行正确性的确认。 如果您设置了“加密文件名选项”,WinRAR 不只加密数据,而且加密所有包括文件数据、文件名、大小、属性、注释和其它块等所有可感知的压缩文件区域,所以它提供了更高的安全等级。在压缩文件中使用这个命令加密,没有密码甚至不可能查

  • 好的,我的res目录中有4个文件夹:drawable mdpi,drawable hdpi,drawable xhdpi,drawable xxhdpi。我想知道如何制作一个默认的可绘制文件夹,在那里我可以放置图像,如果在特定密度的文件夹中找不到图像,Android设备会在消噪文件夹中查找。所以我创建了一个没有限定符的名为drawable的。问题是,当我将图像放在新创建的文件夹中时,它与我将其放在

  • 问题内容: 我在Ubuntu 10.10 x64中的Enthought Python发行版(Python 2.6.6)下使用PyAudio。 这是我尝试打开输入流时遇到的相同错误。没有相应的错误“ IOError:无默认输出设备可用” 问题答案: 好的,这不是一个漂亮的解决方案,但对我有用。根据我对ulidtko答案的评论,pyaudio不是问题,而是pyaudio应该绑定到的底层PortAudi

  • 问题内容: 万一属性无效(仅使用HTML),有什么方法可以在HTML 标签中呈现默认图像?如果没有,那么解决该问题的轻量级方法是什么? 问题答案: 您要求提供 仅HTML的 解决方案… 由于第一个图像不存在,因此将显示后备(此网站上使用的sprites *)。如果您使用的是 真正 的老的浏览器不支持,它会忽略该标签和使用标签。有关兼容性,请参见caniuse网站。截至2018年,ie6 +的所有浏

  • 本文向大家介绍写一个密码默认星号,但可以查看密码的输入框相关面试题,主要包含被问及写一个密码默认星号,但可以查看密码的输入框时的应答技巧和注意事项,需要的朋友参考一下