首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在量角器中如何控制测试用例在不同的浏览器上运行

在量角器中如何控制测试用例在不同的浏览器上运行
EN

Stack Overflow用户
提问于 2017-05-31 13:54:16
回答 2查看 703关注 0票数 1

测试问题

如测试问题图所示,有两个浏览器运行不同的测试用例。我想在运行中的浏览器( browser1和browser2)上运行规范7,并进行交互,比如聊天应用程序。在两个浏览器上运行规范1至6之后,规范7应该在两个浏览器上运行,并进行指定的测试。例如:

spec7.js文件:

  • user1将hello从browser1发送到browser2中的user2。
  • user2在browser2中接收hello,并将msg从browser2发送到browser1中的user1。

这两个操作都应该在同一个spec7.js文件中执行,并且这个文件应该在已经为其他specs文件运行的两个浏览器中运行。我在寻求帮助。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-05-31 16:43:51

你可以用两个文件来解决你的问题。

我尝试用一个示例聊天应用程序来解释它。

spec7_browser1.js:

代码语言:javascript
运行
复制
...
//Sends own message
element(by.id('messageInput')).sendKeys('hello'); // Enters hello into the message input field

element(by.id('submitMessage')).click(); // Clicks on the submit button to send the message

expect(element(by.id('chat')).getText()).toContain('hello');

// Waits for the message of browser 2
var EC = protractor.ExpectedConditions;
browser.wait(EC.textToBePresentInElement(element(by.id('chat')), 'hi'), 60000); // Waits until the given text is displayed in the element and fails if the text is not displayed in 60 seconds 

expect(element(by.id('chat')).getText()).toContain('hi');
...

spec7_browser2.js:

代码语言:javascript
运行
复制
...
// Waits for the message of browser 1
var EC = protractor.ExpectedConditions;
browser.wait(EC.textToBePresentInElement(element(by.id('chat')), 'hello'), 60000); // Waits until the given text is displayed in the element and fails if the text is not displayed in 60 seconds 

expect(element(by.id('chat')).getText()).toContain('hello');

// Sends own message
element(by.id('messageInput')).sendKeys('hi'); // Enters hello into the message input field

element(by.id('submitMessage')).click();

expect(element(by.id('chat')).getText()).toContain('hi');
...

等等..。

也许您需要在protractor-config.js中增加茉莉的默认超时时间。

代码语言:javascript
运行
复制
jasmineNodeOpts: {
    ...
    defaultTimeoutInterval: 90000 // 90s timeout
}

我希望这有帮助,否则请告诉我,这样我就可以改进我的答案;-)

票数 0
EN

Stack Overflow用户

发布于 2017-05-31 15:15:21

量角器允许您使用browser.forkNewDriverInstance(opt_useSameUrl, opt_copyMockModules)方法解决这个问题,该方法将返回一个独立的浏览器对象。引用链接中的Protractor概述,以下是官方文档-

如果您正在测试两个浏览器需要相互交互的应用程序(例如聊天系统),您可以通过在测试过程中动态创建浏览器来实现这一点。量角器在浏览器对象中公开一个函数,以帮助您实现这一目标:browser.forkNewDriverInstance(opt_useSameUrl, opt_copyMockModules)。调用它将返回一个新的独立浏览器对象。函数中的第一个参数表示是否希望新浏览器从与您分叉的浏览器相同的url开始。第二个参数表示是否希望新浏览器从您分叉的浏览器复制模拟模块。

代码语言:javascript
运行
复制
browser.get('http://www.angularjs.org');
browser.addMockModule('moduleA', "angular.module('moduleA', []).value('version', '3');");

// To create a new browser.

var browser2 = browser.forkNewDriverInstance();

// To create a new browser with url as 'http://www.angularjs.org':

var browser3 = browser.forkNewDriverInstance(true);

// To create a new browser with mock modules injected:
var browser4 = browser.forkNewDriverInstance(false, true);

// To create a new browser with url as 'http://www.angularjs.org' and 
mock modules injected:
var browser4 = browser.forkNewDriverInstance(true, true);`

我想这就是你要找的。根据您提到的问题,您可以特别提到要在其中执行操作的浏览器对象,例如,您可以使用以下方法在第二个实例上验证您的消息

代码语言:javascript
运行
复制
 //get element text in second browser
  var element2=browser2.element;
  element2.getText().then(function(){
     //use an expect to verify the text
 }); 

请通过上面给出的链接作进一步解释。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44286717

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档