为什么我在浏览器“Chrome”和“Internet Explorer”中有不同的结果?

时间:2015-07-22 07:57:36

标签: angularjs google-chrome internet-explorer browser protractor

我正在使用量角器进行e2e测试,但我有一个奇怪的问题。我的测试在“Chrome”上运行良好,但是当我选择“Internet Explorer”时,一些对象找不到,我的测试失败了。为什么?我可以用它做什么?

规范失败的示例:

describe('ps-grid-column-filter-range_spec_1.1.a', function() {

var config = browser.params;

var req = config.req_lib_filter;
require(req);

var tester_column_number = config.column_number_filter;                                         
var tester_url = config.url_filter;

var filter_field = element(by.xpath("//td[@class='ng-scope n-grid__filter']["+ tester_column_number +"]"));          
var balloon_info = $('div[class="n-balloon n-balloon_bottom_left n-balloon_can_close n-balloon_info"]');                            

beforeEach(function() {
    browser.get(tester_url);
});


it('balloon should contain text',function(){                                                
    filter_field.click();                                                                   
    browser.sleep(3000);                                                                    
    var balloon_text = (balloon_info.element(by.css('div'))).element(by.css('span'));   
    var height = balloon_info.getAttribute("style");
    expect(height).toContain("height: 50px;");                                              
    expect(balloon_text.getText()).toContain('Допустимо вводить диапазон от');              
    expect(balloon_text.getText()).toContain('Например:');                                                                               
    if (true) console.log("ps-grid-column-filter-range_spec_1.1.a : text1");      


  }); 

it('should show balloon',function(){                                                        
    filter_field.click();                                                                   
    browser.sleep(3000);                                                                    
    if (balloon_info.isPresent()) expect(balloon_info.isDisplayed()).toBe(true);            
    else expect(true).toBe(false);                                                          
    if (true) console.log("ps-grid-column-filter-range_spec_1.1.a : text2");      

}); 
 });

在'Chrome'中它可以使用,但在'Internet Explorer'中我收到错误:

NoSuchElementError: No element found using locator BycssSelector("div[class="n-balloon n-balloon_bottom_left n-balloon_can_close n-balloon_info"]")

1 个答案:

答案 0 :(得分:0)

使用IE浏览器总是可以做些额外的工作。

在您的情况下,我会尝试以下方法:

  • 添加显式等待,而不是browser.sleep()

    filter_field.click(); 
    
    var EC = protractor.ExpectedConditions;
    browser.wait(balloon_info, 5000);
    
  • 点击过滤器通过javascript:

    browser.executeScript("arguments[0].click();", filter_field);