需要在变量中存储到css元素

时间:2016-06-20 06:27:32

标签: javascript css angularjs protractor

我试图让我的代码在portractor中更具可读性。 我想将css类存储在变量中,并且需要在click方法上访问该变量。

element.all(by.css("div[ng-click=\"setLocation('report_road')\"]")).click();

element.all(by.css("div[ ng-click=\"mapFeedBack.editObject= mapFeedBack.createMapObjectModel();setLocation(mapFeedBack.noMap?'road_new':'choose_location_road_new/road_new')\"]")).click();

    it("test browser should reach report road option",function() //spec2s
{
    element.all(by.css("div[ng-click=\"setLocation('report_road')\"]")).click();
    expect(browser.getCurrentUrl()).toContain("report_road");
    browser.sleep(browser.params.sleeptime);
    browser.sleep(browser.params.sleeptime);
});


it("test browser should reach report road missing",function() //spec3
{
    element.all(by.css("div[ ng-click=\"mapFeedBack.editObject= mapFeedBack.createMapObjectModel();setLocation(mapFeedBack.noMap?'road_new':'choose_location_road_new/road_new')\"]")).click();
    expect(browser.getCurrentUrl()).toContain("choose_location_road_new/road_new");
    browser.sleep(browser.params.sleeptime);
    browser.sleep(browser.params.sleeptime);
});

所以我在我的文件中创建了两个变量:

var road_button ="\"div[ng-click=\"setLocation('report_road')\"]\"";

var road_missing= "\"div[ ng-click=\"mapFeedBack.editObject= mapFeedBack.createMapObjectModel();setLocation(mapFeedBack.noMap?'road_new':'choose_location_road_new/road_new')\"]\"";

并尝试使用该变量访问我的css类:

element.all(by.css(road_button)).click();
element.all(by.css(road_missing)).click();

但有些我怎么也无法访问这些变量值。你能帮我提供正确的方法吗? 谢谢

1 个答案:

答案 0 :(得分:1)

我认为你有点重新发明轮子。您真正需要遵循的是使用页面对象的指南。它们不仅可以解决将定位器与测试流程和测试场景逻辑分离的问题,还可以使代码更加模块化,并且易于适应应用程序端永无止境的更改。

以下是对量角器中页面对象的实用介绍: