我只是尝试将文本从gmail复制/粘贴到另一个输入,并意识到cafe测试不支持ctrl-c、ctrl-v。
以下是我尝试做的:
pom:
import { Selector, t} from 'testcafe';
class LoginPage {
copyStepCarrierPassword: Selector;
copyCarrierPassword: Selector;
emailInput: Selector;
constructor(){
this.copyStepCarrierPassword = Selector('[class="ams bkG"]');
this.copyCarrierPassword = Selector('[class="gmail_quote"]');
this.emailInput = Selector('[id="userEmail"]');
}
async copyPassword(){
await t
.selectText(this.copyCarrierPassword, 1, 10)
.pressKey('ctrl+c');
}
async navigateToCarrierPage(carrierPageUrl){
await t
.navigateTo(carrierPageUrl)
}
async setEmailInput(emailInput){
await t
.typeText(this.emailInput, emailInput)
.pressKey('ctrl+v');
}
}
测试:
test('Copy/Paste password',
async t => {
await t
LoginPage.copyStepPassword();
await t.wait(1000);
LoginPage.copyPassword();
await t.wait(3000);
await t.openWindow(carrierUrl);
LoginPage.setEmailInput('');
await t.wait(3000);
}
我在这里看到了一个例子,但我不知道如何在我的情况下使用它。谁知道如何解决这个问题?
我想知道您在这种情况下测试了什么。Ctrl+C和Ctrl+V有效吗?但这很可能与你的应用程序无关。你为什么不直接获取文本,然后将其输入到用户的电子邮件输入中呢?为什么你必须使用Ctrl+C和Ctrl+V?
如果你真的需要粘贴功能,在.typeText()
方法中有一个选项:
await t
.typeText(this.emailInput, emailInput, { paste: true });
既然你是从Gmail复制的,我认为你不需要使用Ctrk+C。我认为你根本不需要使用UI。这有充分的理由,一是你无法控制Gmail应用程序,所以如果他们更改UI/选择器,你的测试就会失败。这太古怪了,你想避免这种情况。了解如何改用API调用。