【问题标题】:How to select text and then perform a cypress test on it?如何选择文本然后对其执行柏树测试?
【发布时间】:2021-12-22 11:07:35
【问题描述】:

我有一个小应用程序要在 cypress 上进行测试。它有一个编辑器供用户添加描述和内容。用户可以使文本变为粗体、斜体等。用户还可以删除到目前为止添加到文本上的格式。但是要删除格式,应该像我们通常在任何文字编辑器中一样选择文本。

我的问题是如何在保持选中文本的同时测试此功能。

一个简单的代码示例如下:

<p>This is the description text</p>

到目前为止,我已经得到了这个,但这当然不会保留选中的文本,知道如何满足这个要求吗?

            cy.get('p').contains('This is the description text');
            cy.get('.remove-formats').click();
            cy.get('.tools')
             .within(() => cy.get('button').should('not.have.class', 'is-active')); 
         

我应该在第一行中进行哪些更改,以便在第二行执行时文本保持选中状态,因为我希望仅对文本执行删除格式。任何帮助将不胜感激。

编辑:

文本编辑器非常简单,就像我们在 stackoverflow 中使用的一样。

类似于我们需要先选中文本然后点击粗体使文本变为粗体,否则不暗示文本。我将如何为此构建柏树测试? 我已经通过 dblclick() 选择了文本,但是一旦我单击任何选项来测试该功能,文本就不会在 cypress 测试中保持选中状态。

【问题讨论】:

    标签: javascript cypress


    【解决方案1】:

    您可以使用双击来选择文本。

    cy.contains('This is the description text').dblclick()
    

    您也可以使用ctrl+A的组合

    cy.contains('This is the description text').click().type('{ctrl+a}')
    

    【讨论】:

    • 这会选择文本,但一旦执行下一行,它就不会保持选中的文本。我想在确保文本保持选中状态的同时执行第二行
    • 可以有一个 then 块,我可以使用它吗?
    • 文本选择后下一步你要做什么?
    • 清除所选文本的所有格式。为此,我需要在保持选中文本的同时单击另一个按钮
    • 您的网页是公开的吗?或者您在互联网上是否有任何类似的文本编辑器,我可以查看?因为很难根据现有信息进行调试。
    【解决方案2】:

    尝试使用

     .type("{selectall}{leftarrow}")
    

    来自 cypress docs {selectall} - 通过创建选择范围选择所有文本

    【讨论】:

    • 不走运,它选择了文本,但是一旦它进入第二行,就不再选择文本。我想知道这是否是默认的柏树行为?
    • 好的,但是如果您不使用.click() 而是进行格式化会怎样?还是goes to the second line?只是想澄清一下,谢谢
    • 无论如何它都会进入第二行。如果我删除单击,它将只获取具有提到的类的元素。但在这种情况下,它也不会保留之前选中的文本。
    猜你喜欢
    • 2022-11-12
    • 1970-01-01
    • 1970-01-01
    • 2018-08-21
    • 2020-03-05
    • 2022-09-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多