我正在做自动化测试,我需要在文本字段中输入文本,但问题是没有‘输入’来做这件事。
这个不会起作用:
document.querySelector([class*=modal-dialog] [class*=AddCitation_] [class*='DraftEditorPlaceholder']).value='Hello World'有人知道如何在draft.js中输入文本吗?
发布于 2019-08-16 20:07:04
您可以使用document.execCommand("insertHTML","html string here",false),因为您可以看到草案js使用div的contenteditable属性来编写文本,所以如果您想使用draftjs自动执行测试,可以使用命令插入任何示例html字符串,这样您就可以在草案编辑器中执行测试了,请阅读此https://developer.mozilla.org/en-US/docs/Web/API/Document/execCommand
发布于 2019-08-18 19:11:18
让我们先来理解一下你写的代码:
document.querySelector([class*=modal-dialog] [class*=AddCitation_] [class*='DraftEditorPlaceholder']).value='Hello World'此代码尝试:
<代码>F210的类
因此,您首先需要确保您尝试编辑的元素位于一个元素内,该元素具有一个包含modal-dialog的类。在您的屏幕截图中,我们看不到这样的祖先元素,即根有一个modal-content类。如果您编写的选择器没有找到元素,那么当您尝试为它的任何属性赋值时,就会抛出一个错误,比如本例中的value。您有一个具有styles_AddCitation__3_D5j类的元素,它是modal-content类的元素的子元素。您有一个具有public-DraftEditorPlaceholder-root类的元素,假设您有一个包含模式对话框文本的类作为其祖先,那么选择器将找到它。但是,这是您希望在查询中找到的元素的同级元素。所以,你需要找出你打算把文本放在哪里。
现在,假设您已经对选择器进行了排序,并且您正在讨论的元素中有一个span,那么您将需要在选择器的末尾编写span,并在其前面加上一个空格。此外,在这种情况下,您需要将value设置为所需的值,而不是innerText。如果目标元素是一个输入,那么设置一个值就足够了。
另一个可能的问题是,您的Javascript代码可能会在实际生成结构之前运行,因此无法设置尚不存在的元素的属性。因此,您还需要确保在此Javascript代码运行时,您的结构确实已经就位。
发布于 2019-08-18 19:29:57
const screen = document.getElementById("screen");//get span ID
screen.innerHTML += `<span class="screen" >${
this.textContent
}</span>`);//add text content
<body>
<h1>CALCULATOR</h1>
<!-- <div class="container"> -->
<div class="container">
<div class="column2" id="screen">
<!-- <span class="screen"></span> -->
</div>我使用它将span标记插入到div标记中。我只是一个初学者,所以我在一个简单的计算器上试验JS时使用它可能不是最好的,因为我想看看它是否可以在不使用输入标签的情况下工作。请让我知道这是否有帮助,因为它也将帮助我查看我的理解是否良好
https://stackoverflow.com/questions/57522928
复制相似问题