当我试图在编者文本编辑器上自动输入用户时,我遇到了一个问题。
详情如下:
click
或clickAt
ID
、Name
或Class
的定位器。type
并输入文本click
所有的测试用例都通过了,但是在点击Save按钮之后,没有输入/出现在Redactor文本编辑器上的文本,为什么呢?
发布于 2017-02-09 15:20:40
绝对可解
问题:编辑人员通常以不同的方式工作。您可以只对inputbox使用type或sendKeys IDE命令,这将注入inputbox的值。
文本编辑器通常生成id,每次重新加载页面时,id不同。
解决方案:文本编辑器通常使用唯一的id定义元素,其中包含后续/子HTML标记,作为编辑文本的内容。您可以做的是通过javaScript在storeEval中向该元素注入值。
IDE代码示例:您必须本地化并替换idOfTextArea存储变量的Xpath
<tr>
<td>store</td>
<td><p>Some text<br></p></td>
<td>inputText</td>
</tr>
<tr>
<td>storeAttribute</td>
<td>//div[contains(@id,'taTextElement')]@id</td>
<td>idOfTextArea</td>
</tr>
<tr>
<td>storeEval</td>
<td>this.browserbot.getCurrentWindow().document.getElementById(storedVars['idOfTextArea']).innerHTML = storedVars['inputText']; </td>
<td></td>
</tr>
<tr>
<td>storeEval</td>
<td>this.browserbot.getCurrentWindow().document.getElementById(storedVars['idOfTextArea']).innerHTML</td>
<td>resulttext</td>
</tr>
storeAttribute | //div[contains(@id,'taTextElement')]@id
获得它的id。如果编辑器窗口的id是常量,则可以跳过这一点,或者用store | some ConstantId
替换它。this.browserbot.getCurrentWindow()
获得当前的HTMLgetElementById(storedVars['idOfTextArea'])
获得编辑器窗口的对象。如果编辑器窗口元素的id是常量,则可以替换它为storedVars[...]
。.innerHTML
获取或更改编辑器窗口中的所有HTMLresulttext
将包含文本,如果一切正常,那么您可以通过比较inputtext
和resulttext
来验证结果。https://sqa.stackexchange.com/questions/25123
复制相似问题