Appium:清除一个字段

use*_*899 12 appium

我现在在应用程序中有我的登录屏幕.每次在屏幕上启动应用程序时,手机号码都会预先填入旧文本.

我只是想知道我已经尝试过:

WebElement mob = driver.findElement(By.name("Mobile Number"));
mob.clear // Not working
Run Code Online (Sandbox Code Playgroud)

我试过了 :

String Mobile
mob="";   
Run Code Online (Sandbox Code Playgroud)

但它仍然无法删除预填充的文本.

我正在尝试使用appium自动化我的Android应用程序,请帮助我.

Alo*_*ski 6

它绝对没有效率,可以改进,并且可能有更好的方法...但是,使用adb的shell输入键事件代码我简单地称为"dpad right"将光标一直移动到右边.在那里,发送密钥代码"DEL"开始一直删除...所以...两个for循环.这主要用于短文:

public void cleatTextFully(WebElement element) {
    int stringLength = element.getText().length();

    for (int i = 0; i < stringLength; i++) {
        mDriver.sendKeyEvent(22); // "KEYCODE_DPAD_RIGHT"
    }

    for (int i = 0; i < stringLength; i++) {
        mDriver.sendKeyEvent(67); // "KEYCODE_DEL"
    }
}
Run Code Online (Sandbox Code Playgroud)

mDriver是AppiumDriver实例.希望这会有所帮助.


plo*_*sco 5

我也遇到了麻烦.我发现的一个主要问题是,为了通过按删除键删除该区域,它需要点击该行的末尾.这对我有用:

public void clearTextField(WebElement element) {
    double x = element.getLocation().getX() + element.getSize().width - 5;
    double y = element.getLocation().getY() + ((double) element.getSize().height / 3);
    preciseTap(x, y, 0.1, 1);
    while (!element.getText().isEmpty()) {
        pressDeleteKey();
    }
}

public void preciseTap(double x, double y, double duration, int touchCount) {
    JavascriptExecutor js = (JavascriptExecutor) driver;
    HashMap<String, Double> tapObject = new HashMap<String, Double>();
    tapObject.put("x", x);
    tapObject.put("y", y);
    tapObject.put("touchCount", (double)touchCount);
    tapObject.put("duration", duration);
    js.executeScript("mobile: tap", tapObject);
}

public void pressDeleteKey() {
    HashMap swipeObject = new HashMap();
    swipeObject.put("keycode", 67);
    ((JavascriptExecutor) driver).executeScript("mobile: keyevent", swipeObject);
}
Run Code Online (Sandbox Code Playgroud)

它比清除它要快得多,但我还没弄清楚如何做到这一点.非常适合双击或点击并按住直到选中所有内容.


Nam*_*man 5

在清除之前单击textBox应该使用最新的libs:

WebElement mob = driver.findElement(By.name("Mobile Number"));
mob.click();
mob.clear();
Run Code Online (Sandbox Code Playgroud)

或从样品jUnitTest 这里

WebElement text = driver.findElement(By.xpath("//UIATextField[1]"));
text.sendKeys("12");
text.clear();
Run Code Online (Sandbox Code Playgroud)

我猜


Abh*_*ain 1

如果文本字段包含任何预先指定的手机号码,请按以下方式操作。

WebElement mob = driver.findElement(By.name("xxxxxxxxxx")); mob.clear();

xxxxxxxxxx:打开应用程序时预先指定的手机号码。

否则使用其他一些定位技术,例如 By.xpath 、 By.id (如果您正在测试 android 和 Selendroid 的功能)等。