Как вставить текст из буфера обмена в текстовое поле и ввести его в testcafe? - PullRequest
0 голосов
/ 18 февраля 2020

У меня есть текстовое поле в таблице, и я хочу скопировать содержимое буфера обмена в текстовое поле

Поскольку опция вставки недоступна в testcafe, попробуйте следующее:

const execPaste = ClientFunction(() => document.execCommand("paste"));
t..click(Selector(".table > tbody > tr:nth-child(5) > td:nth-child(3)"))
    .typeText(
      Selector(".table > tbody > tr:nth-child(5) > td:nth-child(3)"),
      JSON.stringify(execPaste())
    );
console.log(JSON.stringify(execPaste()));

и в журнале консоли я вижу "{" _then ": []," _ taskPromise ": null}", а не значение, которое копируется из буфера обмена

Пожалуйста, помогите

1 Ответ

2 голосов
/ 20 февраля 2020

ClientFunction возвращает Promise, поэтому для получения значения ClientFunction необходимо дождаться этого обещания:

JSON.stringify(await execPaste())

Чтобы вставить значение из буфера обмена, вы можете сфокусировать элемент, куда вы собираетесь вставить значение, а затем вызвать метод document.execCommand("paste"). Если я правильно понимаю ваш код, первый click должен сфокусировать целевой элемент. Пожалуйста, попробуйте изменить пример кода следующим образом:

    const execPaste = ClientFunction(() => document.execCommand("paste"));

    await t.click(Selector(".table > tbody > tr:nth-child(5) > td:nth-child(3)"));
    await execPaste();
...