清除();方法不适用于 React 输入

clear(); method not working for React inputs

我们正在开发的大部分应用程序都是用 Angular 制作的,但我们正在慢慢过渡到在 ReactJS 中重建它。 clear() 在 Angular 输入上仍然可以完美运行,但在 React 输入上绝对没有任何作用

我很久以前写了一个可重用的函数:

const clearAndSendKeys = async (input, text) => {
    await input.clear();
    await input.sendKeys(text);
};

上述函数在 angular 元素上运行良好,但 clear() 部分对使用 React 制作的页面没有任何影响。
我也试过不使用该功能,只是使用

await input.clear();
await input.sendKeys(text);

也不行。
我将粘贴其中一个输入和我用来定位它的方法

<div widths="equal" class="required field">
    <label>
        "Address"
        ::after
    </label>
    <div class="ui input">
        <input name="address1" placeholder type="text" value="fake address">
    </div>
</div>

定位器:
const addressInput = element(by.name('address1'));

更新
我可以通过在循环中使用退格键来解决这个问题。这不是理想的方法,但它有效(理想的方法是 clear() 有效

    this.clearInput = async (input) => {
        const inputValue = await input.getAttribute('value');
        const valueLength = await inputValue.length;
        for (let i = 0; i < valueLength; i++) {
            await input.sendKeys(protractor.Key.BACK_SPACE);
        };
    };

如果您尝试 输入

会怎样
let reset = async $elem => 
    browser.executeScript('return arguments[0].reset()', $elem.getWebElement());

如果不起作用请告诉我

P.S.

好吧...我知道你会在下面看到的是丑陋和愚蠢的...但它在我去年测试的所有 16 个应用程序中为我完成了工作

sendKeys: async ($element, keyCode = '') => {
        let size = await $element.getSize();
        let clickCoordinates = {
            x: Math.round(size.width - 3),
            y: Math.round(size.height / 2),
        };

        let value = await $element.getAttribute('value');
        for (let i = 0; i < value.length; i++) {
            await $element.sendKeys(protractor.Key.BACK_SPACE);
        }
        await $element.clear();

        // see a pic below, for example of where I click
        await browser
            .actions()
            .mouseMove($element, clickCoordinates)
            .click()
            .perform();
        await $element.sendKeys('1');
        await $element.sendKeys(protractor.Key.BACK_SPACE);
        await $element.sendKeys(keyCode);
    },

我可以通过在循环中使用退格键来解决这个问题。这不是理想的方法,但它有效(理想的方法是 clear() 工作

this.clearInput = async (input) => {
    const inputValue = await input.getAttribute('value');
    const valueLength = await inputValue.length;
    for (let i = 0; i < valueLength; i++) {
        await input.sendKeys(protractor.Key.BACK_SPACE);
    };
};  

这不是最好的解决方案,但目前可以解决问题。虽然我很想知道为什么 clear() 方法在这些反应输入组件中不起作用