【问题标题】:Unable to send text to textbox element无法将文本发送到文本框元素
【发布时间】:2020-02-20 15:11:53
【问题描述】:

我正在尝试向 Android 应用中的搜索文本框发送一些文本,但它一直返回 NoSuchElement 异常。

以下是从Appium的元素定位器中获取到的元素的属性。

以下是将文本发送到搜索框的代码。

driver_App.findElement(By.xpath("//android.widget.EditText[@content-desc='Search']")).sendKeys("ABC");

我已经通过 id 尝试过

driver_App.findElement(By.id("header-search")).sendKeys("ABC");

按类名

driver_App.findElement(By.className("android.widget.EditText")).sendKeys("ABC");

在一定程度上,如下:

new WebDriverWait(driver_App, 30).until(ExpectedConditions.presenceOfElementLocated(By.xpath("//*[@id='header-search']")));
driver_App.findElement(By.xpath("//*[@id='header-search']")).sendKeys("ABC");

以上都无法将字符串“ABC”发送到文本框元素,并返回 NoSuchElement 异常。

希望对我可能做错的事情和可能的解决方案提出建议。

注意: 为元素搜索添加了以下完整树结构的屏幕截图。

【问题讨论】:

  • driver_App.findElementByAccessibilityId("Search").sendText("..."); 怎么样?
  • 嗨@Vault23,我已经尝试了你的建议,很遗憾地报告它也没有奏效。如果我使用 ,sendKeys() 和 .sendText() 有什么区别吗?
  • 我混淆了方法名称,sendKeys() 是正确的。在这种情况下,我建议特定定位器有问题。您能否为这个元素粘贴整棵树,以便我们能够看到它的完整路径?
  • @Vault23我附上了 UIAutomator 的截图。希望这会有所帮助。
  • 这很奇怪,我看到的唯一区别是 long-clickable 属性设置为 false(与其他应用程序中的一些随机文本字段相比)。因此,我建议您将应用程序的其他一些文本字段的属性与该属性进行比较。

标签: java android selenium appium


【解决方案1】:

将字符串发送到移动设备中的文本字段的方法很少。

一些android文本需要先点击。

new WebDriverWait(driver_App, 30).until(ExpectedConditions.presenceOfElementLocated(By.id("header-search")));
driver_App.findElement (By.id("header-search")).click();
driver_App.findElement (By.id("header-search")).sendKeys ("ABC");

【讨论】:

  • 嗨@john,我尝试添加“.click()”,但不幸的是,它仍然返回 NoSuchElement 异常。
  • 使用 setvalue 或执行 javascript 发送 .看看这些是否有效?
  • 我曾尝试使用 setValue,但遗憾的是,它并没有很好地工作。但是,我认为主要问题是它无法找到元素。我会试试javascript的方法,很快就会告诉你结果。
猜你喜欢
  • 2021-07-03
  • 1970-01-01
  • 2016-11-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多