我要做的第一件事就是在主登录界面输入用户名,以便能够登录我的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");
尝试发送“用户名”作为用户名的所有3个版本,当我运行测试时,该字段中实际键入的内容是:“编辑.用户名或电子邮件.用户名”
因此,似乎还保留了占位符文本,然后添加了我的用户名.
请注意,当我使用appium发送用户名时添加的文本首先不在那里(参见屏幕截图),但在UI树视图中,它似乎是EditText中的文本.当Appium运行测试时,它实际上是在添加我自己的用户名之前编写“编辑.用户名或电子邮件”文本.
我也尝试过,正如其中一个答案中的建议在这里提出的另一个问题: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");
使用.clear()崩溃,我注意到其他人建议尽可能避免它.
当然,如果我尝试手动执行此 *** 作,则不会添加占位符文本,我只需键入即可在字段中添加用户名.
我也可以使用driver.sendKeyEvent()函数并发送我的一个字符,但我想发送用户名作为参数,并能够在字段中键入任何用户名.
因为每次我尝试输入用户名时都会输入额外的文本,要解决此问题,我必须首先输入“用户名” – 在应用程序中,输入的实际文本是“编辑.用户名或电子邮件.用户名” – 然后移动光标留在单词“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 }
我错过了什么?任何帮助将不胜感激.我试图理解为什么额外的文本被输入.
解决方法 经过大量的搜索,我发现这真的是Appium v 1.2.2中的一个错误:https://discuss.appium.io/t/android-appium-1-2-2-sendkeys-issue-with-hinted-edit-text/309
希望正如在那里所说的那样,它将在版本1.2.3中修复.
感谢你的帮助!
总结以上是内存溢出为你收集整理的Android上的Appium – SendKeys到EditText也键入默认文本全部内容,希望文章能够帮你解决Android上的Appium – SendKeys到EditText也键入默认文本所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)