【问题标题】:Running multiple browser instances in the same test spec在同一测试规范中运行多个浏览器实例
【发布时间】:2015-03-19 23:55:27
【问题描述】:

如果我有一个使用页面对象模型的规范,我如何为同一规范运行多个浏览器实例?

例如我有规格:

it('should run multi browser', function() {
    browser.get('http://example.com/searchPage');

    var b2 = browser.forkNewDriverInstance();
    b2.get('http://example.com/searchPage');

    var b3 = browser.forkNewDriverInstance();
    b3.get('http://example.com/searchPage');

    SearchPage.searchButton.click();
    b2.SearchPage.searchButton.click(); //fails here
    b3.SearchPage.searchButton.click();
});

如何为其他浏览器实例重用在SearchPage 页面对象中声明的变量?

【问题讨论】:

  • 答案是否有助于解决问题?谢谢。

标签: testing protractor pageobjects end-to-end


【解决方案1】:

这是一个非常有趣的问题,Using Multiple Browsers in the Same Testinteraction_spec.js 没有涉及。

页面对象的问题是页面对象字段通常使用全局可用的elementbrowser 定义,在您的情况下它们总是指向第一个浏览器实例。但是你基本上需要使用特定的浏览器调用element()

b2.element(by.id('searchInput'));

而不仅仅是:

element(by.id('searchInput'));

仅供参考,element 只是browser.element 的快捷方式。


我真的不确定这是否是一个可靠的解决方案并且是否真的有效,但您可以通过这种方式重新定义global element。将其视为将搜索上下文切换到不同的浏览器实例:

SearchPage.searchButton.click();

global.element = b2.element;
SearchPage.searchButton.click();

global.element = b3.element;
SearchPage.searchButton.click();

global.element = browser.element;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-11-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-21
    • 2018-12-09
    • 1970-01-01
    相关资源
    最近更新 更多