反应本机+ Appium iOS TextInput.clear()

时间:2018-08-02 14:11:04

标签: reactjs react-native appium

这是我的代码,用于在React Native中使用Appium清除Android上的输入:

driver.elementByAccessibilityId(inputName)
      .then(input => input.click()
      .then(() => input.clear()))

input.click()之所以存在,是因为input.clear()在Android中似乎没有选择文本字段。此解决方法在Android上效果很好。

但是,input.click()在iOS上似乎没有任何作用。有没有人为此找到解决方法?

1 个答案:

答案 0 :(得分:1)

这是我的解决方法:发送TextInput中的字符一样多的退格键。

不幸的是,由于this issue,您必须知道TextInput中是什么文本。这是我的完整代码,如果有人想使用它:

    import {Platform} from 'react-native';

    /**
     * @param {string} inputName Name of element
     * @param {string} value Value previously in the input, used by iOS.
     * @returns {() => Promise}
     */
    function clearInput(inputName, value) {
        if (Platform.OS === 'android') {
            return () => driver.elementByAccessibilityId(inputName)
                .then(input => input.click()
                .then(() => input.clear()))
                .then(() => driver.hideDeviceKeyboard());
        }
        else {
            return () => driver.elementByAccessibilityId(inputName)
                .then(input => input.type('\b'.repeat(value.length)))
                .then(() => driver.hideDeviceKeyboard());
        }
    }

我仍然想知道您是否应该通过某种方式在iOS中执行此操作,或者这仅仅是Appium的错误。