Protractor 编写量角器测试用例时如何停止自动关闭浏览器
我不熟悉使用量角器编写非角度应用程序的测试用例。我编写了一个示例测试用例。在这里,浏览器在运行测试用例后自动关闭。我如何防止这种情况发生。这是我的密码Protractor 编写量角器测试用例时如何停止自动关闭浏览器,protractor,Protractor,我不熟悉使用量角器编写非角度应用程序的测试用例。我编写了一个示例测试用例。在这里,浏览器在运行测试用例后自动关闭。我如何防止这种情况发生。这是我的密码 var submitBtnElm = $('input[data-behavior=saveContribution]'); it('Should Search', function() { browser.driver.get('http://localhost/enrollments/osda1.html');
var submitBtnElm = $('input[data-behavior=saveContribution]');
it('Should Search', function() {
browser.driver.get('http://localhost/enrollments/osda1.html');
browser.driver.findElement(by.id('contributePercentValue')).sendKeys(50);
submitBtnElm.click().then(function() {
});
});
我建议您使用
browser.driver.sleep(500)代码>在单击操作之前
看这个
browser.driver.sleep(500);
element(by.css('your button')).click();
browser.driver.sleep(500);
在It
块中添加回调函数,浏览器窗口直到您调用它才会关闭。
因此,请执行您需要的操作,并将回调放在您方便的地方
var submitBtnElm = $('input[data-behavior=saveContribution]');
it('Should Search', function(callback) {
browser.driver.get('http://localhost/enrollments/osda1.html');
browser.driver.findElement(by.id('contributePercentValue')).sendKeys(50);
submitBtnElm.click().then(function() {
// Have all the logic you need
// Then invoke callback
callback();
});
});
我确信点击按钮会在您的页面上触发更改。它可能像元素上的类更改一样微妙,也可能像显示文本“Saved”的
元素一样明显。我要做的是,在测试之后,显式地等待这个更改
[...]
return protractor.browser.wait(function() {
return element(by.cssContainingText('p', 'Saved')).isPresent();
}, 10000);
您可以将这样的等待机制添加到spec文件的afterEach()
方法中,这样即使没有量角器角度隐式等待,您的测试也可以分开
var submitBtnElm = $('input[data-behavior=saveContribution]');
it('Should Search', function() {
browser.driver.get('http://localhost/enrollments/osda1.html');
browser.driver.findElement(by.id('contributePercentValue')).sendKeys(50);
submitBtnElm.click().then(function() {
});
browser.pause(); // it should leave browser alive after test
});
browser.pause()应使浏览器保持活动状态,直到您放开它
@编辑另一种方法是在browser.get(…)之前设置browser.ignoreSynchronization=true
。量角器不会等待角度加载,您可以使用常用的元素(…)语法。在it函数末尾添加browser.pause()
。在函数本身内。要使浏览器在一段时间内不关闭,最好使用browser.wait()。在wait函数内部,编写用于检查元素的visibilityOf()或invisibilityOf()的逻辑,该元素不可见,或者在UI上变为不可见需要时间。在本例中,wait()继续检查逻辑,直到满足条件或达到超时。如果希望浏览器显示更多时间,可以增加超时
var EC=protractor.ExpectedConditions;
var submitBtnElm = $('input[data-behavior=saveContribution]');
it('Should Search', function() {
browser.driver.get('http://localhost/enrollments/osda1.html');
browser.driver.findElement(by.id('contributePercentValue')).sendKeys(50);
submitBtnElm.click().then(function() {
browser.wait(function(){
EC.invisibilityOf(submitBtnElm).call().then(function(isPresent){
if(isPresent){
return true;
}
});
},20000,'error message');
});
});
我还遇到了一个类似的问题,我遇到了一个测试用例流,我们与多个应用程序交互,当使用量角器时,浏览器在执行一个conf.js文件后关闭。现在,当我查看之前的响应时,它就像增加延迟,这取决于我执行的下一个操作的速度,或者是命中或未命中的情况。即使我们从调试的角度考虑,大多数用户都会在夜间运行,并且在分析问题之前,他们希望浏览器处于活动状态几个小时。所以我开始研究量角器的基本代码,发现了一个通用的解决方案,它可以绕过这个问题,独立于任何浏览器。目前,该解决方案专门针对执行一个conf.js文件后不应关闭浏览器的要求,如果有人可以添加一个配置参数,询问用户是否希望在运行后关闭浏览器,则可以改进
通过在命令行中使用tag--seleniumSessionId,可以为将来运行的conf.js文件重用浏览器
解决方案:
- 转到..\AppData\Roaming\npm\node\u modules\dragrator\builded,您的
已安装量角器
- 打开driverProvider.js文件并转到函数quitDriver
- 将返回驱动程序.quit()替换为返回0
就我目前的使用情况而言,代码更改似乎并没有任何副作用,若我遇到任何其他问题,将会更新。下面是代码片段的快照
谢谢
格雷森
代码片段快照:
我发现Gleeson的解决方案是有效的,这确实帮助了我。解决办法是
转到%APPDATA%Roaming\npm\node\u modules\dragrator\builded\driverProviders\
查找driverProviders.js
在记事本或任何其他文本编辑器中打开它
查找并替换返回驱动程序。Quit()返回0
保存文件
然后重新启动测试
我正在使用
节点v8.12.0
npm v6.4.1
量角器v5.4.1
只有在全球安装npm或量角器时,此解决方案才有效;如果您已在本地(文件夹中)安装了npm或量角器,则必须转到本地量角器文件夹并执行相同操作。量角器将关闭它创建的浏览器,因此我使用的方法是通过npm包启动浏览器
免责声明:我是这个软件包的作者
这是一个新的软件包,所以如果它解决了您的问题,请告诉我。我使用它非常成功 你能再解释一下你的问题吗?您所说的浏览器自动关闭是什么意思?浏览器运行完脚本后是否应该关闭?Thanks@GirishSortur我想执行单击操作。但浏览器在触发单击之前关闭。我已更新问题中的代码。窗口关闭后控制台中是否有日志?量角器/jasmine在最后报告了什么?我猜窗口正在关闭,因为您的定位器看起来不正确,并且抛出了一个错误,您在属性周围缺少引号。应该是var submitBtnElm=$('input[data behavior=“saveContribution”]”)代码>这里有一个简单但有效的答案我有一个类似的问题,我使用browser.sleep(1000);但这并没有解决我的问题,我甚至更改了默认的超时间隔=120000;但是没有结果总是我的所有测试都在页面加载之前通过!增加这样的睡眠不是一个好的做法。请参阅下面的解决方案,如果您使用回调函数来保持浏览器窗口打开它似乎不工作,无论是在函数内或OutsHI格里森-您应该考虑在您的答案中直接发布您的代码。这将使索引和引用更容易。