简体   繁体   English

在量角器测试运行时更改页面网址

[英]Change page url while Protractor test is running

In my protractor tests I want to do something in a page (page1). 在量角器测试中,我想在页面(page1)中做某事。 After that in the same testscript I want to go to another page (page2) to check the results. 之后,在同一测试脚本中,我想转到另一页(第2页)以检查结果。

describe('something', function() {
  describe('foo', function() {
    browser.get(url_1);
    it("should do something with elem1 on page1", function() {
      var elem1 = element(by.css("..."));
      ...
    });
  });
  describe('bar', function() {
    browser.get(url_2);
    it("should do something with elem1 on page2", function() {
      var elem1 = element(by.css("..."));
      ...
    });
  });
});

As long as I not try to navigate to url_2, the tests from page1 are working. 只要我不尝试导航到url_2,第1页上的测试就可以正常工作。 But in the above example the browser navigates to page1 and immediately navigates to page2. 但是在上面的示例中,浏览器导航到page1,然后立即导航到page2。 And I get a "Failed: No element found using locator" error for page1. 我收到了第1页的“失败:使用定位器找不到元素”错误。 I thought commands like browser.get and browser.setLocation should also become part of the controlFlow ? 我认为像browser.get和browser.setLocation这样的命令也应该成为controlFlow的一部分?

How can I solve this problem? 我怎么解决这个问题?

You need to wrap the browser.get(url_2); 您需要包装browser.get(url_2); statement inside beforeAll() method like below. 如下的beforeAll()方法中的语句。

describe('something', function() {
  describe('foo', function() {
    beforeAll(function(){
        browser.get(url_1);
    })

    it("should do something with elem1 on page1", function() {
      var elem1 = element(by.css("..."));
      ...
    });
  });
  describe('bar', function() {

    beforeAll(function(){
        browser.get(url_2);
    })

    it("should do something with elem1 on page2", function() {
      var elem1 = element(by.css("..."));
      ...
    });
  });
});

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM