失败:无法读取未定义的属性(量角器)

问题描述:

 //get count of checked checkboxes, 
//count must be 1 because it selected one product 
        var checkedCount = productPage.selectedProducts.count(); 
        expect(checkedCount).toBe(1).then(function() { 
         browser.sleep(2222); 
         productDialogPage. createTaskButton.click(); 
        }); 

这是我的代码。当用户选择时,createtaskbutton被激活。失败:无法读取未定义的属性(量角器)

通常它被禁用。

误差

Failed: Cannot read property 'then' of undefined Stack: TypeError: Cannot read property 'then' of undefined

当我改变这个

//get count of checked checkboxes, count must 1 be because it selected one product 
       var checkedCount = productPage.selectedProducts.count(); 
       expect(checkedCount).toBe(1); 
       browser.sleep(4222); 


       //click task create and expect confirm dialog to be displyed 
       productDialogPage.createTaskButton.click(); 



same 

Message: Failed: Cannot read property 'click' of undefined Stack: TypeError: Cannot read property 'click' of undefined

它亘古不变的阅读我的规范类,它一旦进入去另一个规范。

也出于同样

  //get count of checked checkboxes, count must 1 be because it selected one product 
      var checkedCount = productPage.selectedProducts.count(); 
      expect(checkedCount).toBe(1); 
      browser.sleep(4222); 



      browser.wait(function() { 
       return productDialogPage.createTaskButton.isPresent(); 
      }) 
+0

如何获取元素createTaskButton? – gyc

  1. expect(actual).toBe(expected)不是thenable,因为它不返回的承诺。
  2. 看来,你应该尝试ExpectedConditions

var EC = ExpectedConditions; 

//get count of checked checkboxes, 
//count must be 1 because it selected one product 
var checkedCount = productPage.selectedProducts.count(); 
expect(checkedCount).toBe(1); 

browser.wait(EC.elementToBeClickable(productDialogPage.createTaskButton, 4222)); 

//click task create and expect confirm dialog to be displyed 
productDialogPage.createTaskButton.click(); 
+0

但是当我在这里选择产品 'var checkedCount = productPage.selectedProducts.count();期望(checkedCount).toBe(1);' 它被启用。不需要点击? – pronto

+1

从你的帖子你说,createTaskButton被禁用,所以你应该等待createTaskButton是可点击的。要么你的createTaskButton不是一个实际的元素。 – cnishina

+0

我改变了你的,因为它给了错误 protractor.ExpectedConditions; 但仍然有错误 : '失败:无法读取未定义 堆栈的特性“isPresent”: 类型错误:无法读取属性“isPresent”未定义' 尽管我没有ispresent。错误行是 'browser.wait(EC.elementToBeClickable(productDialogPage.createTaskButton,4222));' – pronto

对我来说ExpectedConditions(http://www.protractortest.org/#/api?view=ProtractorExpectedConditions.prototype.elementToBeClickable)的帮助下,之前看到答案。你必须解决承诺。希望能帮助到你! :-)

productPage.selectedProducts.count().then(function(countOfSelectedProducts) { 
      expect(countOfSelectedProducts).toBe(1); 
      }); 
     }); 

// and then wait till your TaskButton is enabled via ExpectedConditions.elementToBeClickable 

var EC = protractor.ExpectedConditions; 

browser.wait(EC.elementToBeClickable(productDialogPage.element.createTaskButton()), 10000).then(function() { 
     productDialogPage.element.createTaskButton.click(); 
});