我正在运行Angular应用,当在量角器a上进行测试时click()
,我不知道何时应该使用a来解决诺言then()
。
我在Protractor API上找到了这个:
click命令完成后将解决的承诺。
所以,我应该click().then()
在每个使用click
?
那么,我是否应该在每次点击中都使用click()。then()?
当然不。
不需要它是因为Protractor /
WebDriverJS具有称为“控制流”的机制,该机制基本上是需要解决的承诺队列:
WebDriverJS维护一个待处理的承诺队列(称为控制流),以保持执行有条理。
量角器自然而然地等待Angular:
您不再需要为测试添加等待和休眠。量角器可以在网页完成待处理的任务时自动执行测试的下一步,因此您不必担心等待测试和网页同步。
这导致了一个相当简单的测试代码:
var elementToBePresent = element(by.css(".anotherelementclass")).isPresent();
expect(elementToBePresent.isPresent()).toBe(false);
element(by.css("#mybutton")).click();
expect(elementToBePresent.isPresent()).toBe(true);
不过,有时,如果您遇到同步/定时问题,或者被测应用为非Angular应用,则可以通过click()
显式解决with
then()
并在click回调中继续进行操作来解决该问题:
expect(elementToBePresent.isPresent()).toBe(false);
element(by.css("#mybutton")).click().then(function () {
expect(elementToBePresent.isPresent()).toBe(true);
});
在这些情况下,也有明确的救援等待,但这与此处无关。
我必须使用量角器和GoogleDrive点击按钮,但问题是在点击之前我有一个加载。所以我必须等待加载消失,然后我可以点击按钮。给定的误差量角器为: 错误是: 要素在点(111、145)处不可点击。其他元素将收到点击:。。。(会话信息:chrome=61.0.3163.100)(驱动程序信息:chromedriver=2.33.506120(E3E534376286C0BC2DC2DC9AA4915
问题内容: 我有一个元素,只有将鼠标悬停在该元素上时,该元素才可见。 我已经编写了以下代码,将其放在面板上,以便该元素可见。 现在,我尝试单击它,但它说-ElementNotVisibleError:量角器中的元素不可见错误。 基本方案是,我想将鼠标悬停在面板上,然后单击隐藏的元素,因为直到将元素悬停在该元素上才可见。 问题答案: 以下代码为我工作。
问题内容: 我有一个很大的数据列表(4000多个项目)。开始输入时- 我的浏览器冻结(最多15秒)。所以我需要关闭自动过滤器功能,并将过滤器功能绑定到单击按钮。通过Google寻找答案没有结果。我该怎么做?请帮帮我 :) 码: 和控制器: 问题答案: 我找到了解决方案! 更改: 至: 向控制器添加“ applySearchFilter”功能 并为过滤器按钮添加html代码: 这有效! 请注意,我在
问题内容: 是否可以使用浏览器中的“历史记录后退”按钮检测到用户进入了页面?最好是我想使用angular.js检测到此动作。 我不想使用角度布线。如果用户提交表单,并且在成功提交到服务器并进行重定向之后,它也应该起作用,如果用户使用浏览器的“后退”按钮返回到表单,则也应该是可行的。 问题答案: 这是Angular的解决方案。 我正在使用运行块来启动它。首先,我将实际位置存储在$ rootScope
问题内容: 我正在使用量角器在我的应用中进行角度js测试,目前大约有19个测试用例,其中一个失败了 当前,我运行所有测试用例。但是,如何仅运行一个测试用例来调试问题,例如描述为“登录页面应成功登录用户”的问题? 问题答案: Protractor的最新版本(至少)支持通常的Jasmine方法:将函数重命名为,并且仅运行其中的测试。或将函数重命名为,仅此测试将运行。
我最近一直在用厚颜无耻为我的角度应用程序编写单元测试,到目前为止一切都很好,但现在我开始编写e2e测试,并想使用量角器,因为这是在现代角度中进行e2e的推荐方法,但我不确定如何将两者集成。 我一直在搜索,找不到任何例子或提示。你可以在这里看到我目前正在我的一个宠物项目中尝试的设置:https://github.com/guerrademitos/MitoPedia