【问题标题】:Appium getText() throws NoSuchElementException after sendKeys() on AndroidElementAppium getText() 在 AndroidElement 上的 sendKeys() 之后抛出 NoSuchElementException
【发布时间】:2018-09-05 14:50:36
【问题描述】:

我有 android:hint="oldtext" 的 EditText。在 Appium 测试项目中,通过 Android UIAutomator 找到这个元素:

WebElement element = 
  driver.findElementByAndroidUIAutomator("new UiSelector().text(\"oldtext\");

然后我向元素发送新文本并调用 get 方法

element.sendKeys("newText");
element.getText();

我想断言新文本,但它抛出 NoSuchElementException:

org.openqa.selenium.NoSuchElementException: UiSelector[TEXT=oldText]
For documentation on this error, please visit:     
http://seleniumhq.org/exceptions/no_such_element.html

【问题讨论】:

    标签: android appium appium-android


    【解决方案1】:

    对于 appium,您可以使用 idresource-idcont-descxpath 来唯一标识元素。 如果您在应用元素中没有看到任何 id 或automationId (cont-desc),最好让您的开发人员将它们放入代码中。

    不推荐使用xpath,如果没有id或者cont-desc的话可以使用。

    现在您可以访问您的元素,如下所示。

    WebElement element= driver.findElement(By.id("element Id")).sendKeys("new Text");
    //or
    WebElement element = driver.findElementById("element id").sendKeys("new Text");
    
    //using accessibility id
    WebElement element = driver.findElementsByAccessibilityId("accesibility Id");
    
    //using xpath
    WebElement element = driver.findElement(By.xpath("//EditText[contains(@text,'oldtext')]"));
    

    【讨论】:

    • 您可以使用 appium 桌面检查器 来了解屏幕中元素的 xpath。使用 appium 桌面检查器并检查您的元素 xpath。
    • 在我的项目中,没有 id、content-desc 等,所以我只能在 EditText 中搜索文本。正如你所说的“不推荐使用 xpath”,我不想使用它,但似乎没有其他选择。
    • 了解如何使用 appium 桌面检查器 here
    • 了解如何使用 appium 桌面检查器检查元素 here
    • 您应该将此标记为已接受的答案,因为您声明它有效。您也可以考虑对他的回答进行投票,因为它也是“有用的”
    猜你喜欢
    • 2015-11-03
    • 1970-01-01
    • 2015-03-07
    • 2022-10-19
    • 2016-10-23
    • 1970-01-01
    • 1970-01-01
    • 2018-10-19
    • 2020-02-10
    相关资源
    最近更新 更多