我在使用量角器选择一些文本时遇到了一些麻烦。
一点背景;这是用于编写新闻文章的AngularJS CMS系统。我要突出显示的文本位于页面大部分区域的文本区域内。类似的应用程序是Google文档文档。
相信有了webdriver,我可以简单地使用一些东西来达到这种效果:
browser.actions().keyDown(protractor.Key.CTRL).sendKeys('a').perform();
但是,我在MAC上进行编码,尽管当前我们的测试是在SauceLabs的Windows框中运行的,但最终目标是迁移到MAC上以模拟我们的用户。
我尝试了类似的代码行,但是使用Command(或CMD),但是它不起作用,根据这篇文章,OSX不支持本机键事件。
我探索过的其他方法:
尝试在元素中单击三次以选择所有文本...但是我无法使它正常工作(有帮助吗?)。由于鼠标光标必须位于文本上方才能突出显示所有文本,因此使情况变得复杂。
在本地计算机上双击该字段可以选择文本区域中的最后一个作品,但是在SauceLabs中,浏览器较小,因此可以选择其他单词。使用起来感觉太脆了,因为在大多数机器上会有所不同。
将文本光标移动到文本区域的开头或结尾,按下Shift键并根据文本区域中的字符数按下向左或向右箭头键。在此实现中,我无法将光标移动到文本字段的开头或结尾。
感谢您的阅读,我意识到这有点长!如果您可以想到一个我还没有想到的方法或一种编码三次单击或箭头键方法的方法,那将非常有帮助!
好的,我设法通过使用.executeScript方法以编程方式选择文本来解决此问题。
这有点作弊,因为它无法模仿用户的交互,但是我找不到替代方法,因此被认为是可以接受的解决方法。
如果您对此感兴趣,请使用以下代码,这将在文本区域中选择第一段:
Article.prototype.selectFirstParagraph = function(driver) {
driver.executeScript(function () {
var range = document.createRange();
range.selectNode(document.body.querySelector('.ui-rich-text-editor__input').firstChild);
var sel = window.getSelection();
sel.removeAllRanges();
sel.addRange(range);
return sel;
});
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句