-
Notifications
You must be signed in to change notification settings - Fork 2.3k
element.$ stopped working #922
Comments
are you sure it's not because of the typo: |
@hankduan no, that typo doesn't actually exist in my code. I'm at Version 0.23.1. |
Is there a template Angular/Protractor app that I can quickly try things in it? |
The following works for me:
You can try with https://angularjs.org like I did. There is also a sample app in the testapp directory you can use. See if the above works for you. Also, try getting the latest version (although i'm not aware of anything in 0.23 that would break it) |
The code I am actually using is different than the example I've provided and the one you wrote. To be exact, I'm pasting my code here: describe('#Deleting', function() {
goToDeveloperApps();
it('deletes the app', function () {
var rows = element.all(by.css('#list tbody tr'));
rows.each(function (row){
return row.getText().then(function(text){
if(text.indexOf(app_name) > -1 ){
row.$('.btn').click();
// row.findElement(by.css('.btn')).click();
modal.confirm();
}
});
});
});
}); commenting out the This is the error I get: TypeError: Cannot call method 'css' of undefinedTypeError: Cannot call method 'css' of undefined
at element.$ (/usr/local/lib/node_modules/protractor/lib/protractor.js:674:31)
at /Users/mohsen/apigee/apigee_ui/webui/platform/test/protractor/tests/developer_apps/basic_developer_apps_curd_test.js:105:17
at /usr/local/lib/node_modules/protractor/node_modules/selenium-webdriver/lib/goog/base.js:1178:15
at webdriver.promise.ControlFlow.runInNewFrame_ (/usr/local/lib/node_modules/protractor/node_modules/selenium-webdriver/lib/webdriver/promise.js:1598:20)
at notify (/usr/local/lib/node_modules/protractor/node_modules/selenium-webdriver/lib/webdriver/promise.js:428:12)
at notifyAll (/usr/local/lib/node_modules/protractor/node_modules/selenium-webdriver/lib/webdriver/promise.js:397:7)
at resolve (/usr/local/lib/node_modules/protractor/node_modules/selenium-webdriver/lib/webdriver/promise.js:375:7)
at fulfill (/usr/local/lib/node_modules/protractor/node_modules/selenium-webdriver/lib/webdriver/promise.js:493:5)
at Object.webdriver.promise.asap (/usr/local/lib/node_modules/protractor/node_modules/selenium-webdriver/lib/webdriver/promise.js:732:5)
at webdriver.promise.ControlFlow.runInNewFrame_ (/usr/local/lib/node_modules/protractor/node_modules/selenium-webdriver/lib/webdriver/promise.js:1609:25)
==== async task ====
WebElement.getText()
at webdriver.WebDriver.schedule (/usr/local/lib/node_modules/protractor/node_modules/selenium-webdriver/lib/webdriver/webdriver.js:267:15)
at webdriver.WebElement.schedule_ (/usr/local/lib/node_modules/protractor/node_modules/selenium-webdriver/lib/webdriver/webdriver.js:1609:23)
at webdriver.WebElement.getText (/usr/local/lib/node_modules/protractor/node_modules/selenium-webdriver/lib/webdriver/webdriver.js:1857:15)
at element.(anonymous function) [as getText] (/usr/local/lib/node_modules/protractor/lib/protractor.js:647:32)
at /Users/mohsen/apigee/apigee_ui/webui/platform/test/protractor/tests/developer_apps/basic_developer_apps_curd_test.js:103:20
at /usr/local/lib/node_modules/protractor/lib/protractor.js:411:11
at Array.forEach (native)
at /usr/local/lib/node_modules/protractor/lib/protractor.js:410:13
at /usr/local/lib/node_modules/protractor/node_modules/selenium-webdriver/lib/goog/base.js:1178:15
==== async task ====
Asynchronous test function: it()
at null.<anonymous> (/usr/local/lib/node_modules/protractor/jasminewd/index.js:93:33)
at null.<anonymous> (/usr/local/lib/node_modules/protractor/node_modules/minijasminenode/lib/async-callback.js:45:37)
at jasmine.Block.execute (/usr/local/lib/node_modules/protractor/node_modules/minijasminenode/lib/jasmine-1.3.1.js:1174:17)
at jasmine.Queue.next_ (/usr/local/lib/node_modules/protractor/node_modules/minijasminenode/lib/jasmine-1.3.1.js:2209:31)
at jasmine.Queue.start (/usr/local/lib/node_modules/protractor/node_modules/minijasminenode/lib/jasmine-1.3.1.js:2162:8)
at jasmine.Spec.execute (/usr/local/lib/node_modules/protractor/node_modules/minijasminenode/lib/jasmine-1.3.1.js:2503:14)
at jasmine.Queue.next_ (/usr/local/lib/node_modules/protractor/node_modules/minijasminenode/lib/jasmine-1.3.1.js:2209:31)
at onComplete (/usr/local/lib/node_modules/protractor/node_modules/minijasminenode/lib/jasmine-1.3.1.js:2205:18)
at jasmine.Spec.finish (/usr/local/lib/node_modules/protractor/node_modules/minijasminenode/lib/jasmine-1.3.1.js:2477:5)==== async task ====
Error
at null.<anonymous> (/Users/mohsen/apigee/apigee_ui/webui/platform/test/protractor/tests/developer_apps/basic_developer_apps_curd_test.js:100:5)
at jasmine.Env.describe_ (/usr/local/lib/node_modules/protractor/node_modules/minijasminenode/lib/jasmine-1.3.1.js:913:21)
at jasmine.Env.describe (/usr/local/lib/node_modules/protractor/node_modules/minijasminenode/lib/jasmine-1.3.1.js:898:15)
at describe (/usr/local/lib/node_modules/protractor/node_modules/minijasminenode/lib/jasmine-1.3.1.js:658:27)
at null.<anonymous> (/Users/mohsen/apigee/apigee_ui/webui/platform/test/protractor/tests/developer_apps/basic_developer_apps_curd_test.js:98:3)
at jasmine.Env.describe_ (/usr/local/lib/node_modules/protractor/node_modules/minijasminenode/lib/jasmine-1.3.1.js:913:21)
at jasmine.Env.describe (/usr/local/lib/node_modules/protractor/node_modules/minijasminenode/lib/jasmine-1.3.1.js:898:15)
at describe (/usr/local/lib/node_modules/protractor/node_modules/minijasminenode/lib/jasmine-1.3.1.js:658:27)
at Object.<anonymous> (/Users/mohsen/apigee/apigee_ui/webui/platform/test/protractor/tests/developer_apps/basic_developer_apps_curd_test.js:5:1)
Failed. |
Can you upgrade and try again? |
With version TypeError: Cannot read property 'ELEMENT' of undefinedTypeError: Cannot read property 'ELEMENT' of undefined
at /usr/local/lib/node_modules/protractor/node_modules/selenium-webdriver/lib/webdriver/webdriver.js:1552:29
at /usr/local/lib/node_modules/protractor/node_modules/selenium-webdriver/lib/goog/base.js:1243:15
at webdriver.promise.ControlFlow.runInNewFrame_ (/usr/local/lib/node_modules/protractor/node_modules/selenium-webdriver/lib/webdriver/promise.js:1531:20)
at notify (/usr/local/lib/node_modules/protractor/node_modules/selenium-webdriver/lib/webdriver/promise.js:354:12)
at notifyAll (/usr/local/lib/node_modules/protractor/node_modules/selenium-webdriver/lib/webdriver/promise.js:323:7)
at resolve (/usr/local/lib/node_modules/protractor/node_modules/selenium-webdriver/lib/webdriver/promise.js:301:7)
at fulfill (/usr/local/lib/node_modules/protractor/node_modules/selenium-webdriver/lib/webdriver/promise.js:421:5)
at Object.webdriver.promise.asap (/usr/local/lib/node_modules/protractor/node_modules/selenium-webdriver/lib/webdriver/promise.js:663:5)
at webdriver.promise.ControlFlow.runInNewFrame_ (/usr/local/lib/node_modules/protractor/node_modules/selenium-webdriver/lib/webdriver/promise.js:1542:25)
at notify (/usr/local/lib/node_modules/protractor/node_modules/selenium-webdriver/lib/webdriver/promise.js:354:12)
==== async task ====
WebDriver.findElements(By.cssSelector("#list tbody tr"))
at webdriver.WebDriver.schedule (/usr/local/lib/node_modules/protractor/node_modules/selenium-webdriver/lib/webdriver/webdriver.js:268:15)
at webdriver.WebDriver.findElements (/usr/local/lib/node_modules/protractor/node_modules/selenium-webdriver/lib/webdriver/webdriver.js:826:17)
at ElementArrayFinder.getWebElements (/usr/local/lib/node_modules/protractor/lib/protractor.js:117:28)
at ElementFinder.getWebElement (/usr/local/lib/node_modules/protractor/lib/protractor.js:568:51)
at self.(anonymous function) [as getText] (/usr/local/lib/node_modules/protractor/lib/protractor.js:387:30)
at /Users/mohsen/apigee/apigee_ui/webui/platform/test/protractor/tests/developer_apps/basic_developer_apps_curd_test.js:103:20
at /usr/local/lib/node_modules/protractor/lib/protractor.js:279:9
at Array.forEach (native)
at /usr/local/lib/node_modules/protractor/lib/protractor.js:278:11
==== async task ====
Asynchronous test function: it()
at null.<anonymous> (/usr/local/lib/node_modules/protractor/node_modules/jasminewd/index.js:93:33)
at null.<anonymous> (/usr/local/lib/node_modules/protractor/node_modules/minijasminenode/lib/async-callback.js:45:37)
at jasmine.Block.execute (/usr/local/lib/node_modules/protractor/node_modules/minijasminenode/lib/jasmine-1.3.1.js:1174:17)
at jasmine.Queue.next_ (/usr/local/lib/node_modules/protractor/node_modules/minijasminenode/lib/jasmine-1.3.1.js:2209:31)
at jasmine.Queue.start (/usr/local/lib/node_modules/protractor/node_modules/minijasminenode/lib/jasmine-1.3.1.js:2162:8)
at jasmine.Spec.execute (/usr/local/lib/node_modules/protractor/node_modules/minijasminenode/lib/jasmine-1.3.1.js:2503:14)
at jasmine.Queue.next_ (/usr/local/lib/node_modules/protractor/node_modules/minijasminenode/lib/jasmine-1.3.1.js:2209:31)
at onComplete (/usr/local/lib/node_modules/protractor/node_modules/minijasminenode/lib/jasmine-1.3.1.js:2205:18)
at jasmine.Spec.finish (/usr/local/lib/node_modules/protractor/node_modules/minijasminenode/lib/jasmine-1.3.1.js:2477:5)==== async task ====
Error
at null.<anonymous> (/Users/mohsen/apigee/apigee_ui/webui/platform/test/protractor/tests/developer_apps/basic_developer_apps_curd_test.js:100:5)
at jasmine.Env.describe_ (/usr/local/lib/node_modules/protractor/node_modules/minijasminenode/lib/jasmine-1.3.1.js:913:21)
at jasmine.Env.describe (/usr/local/lib/node_modules/protractor/node_modules/minijasminenode/lib/jasmine-1.3.1.js:898:15)
at describe (/usr/local/lib/node_modules/protractor/node_modules/minijasminenode/lib/jasmine-1.3.1.js:658:27)
at null.<anonymous> (/Users/mohsen/apigee/apigee_ui/webui/platform/test/protractor/tests/developer_apps/basic_developer_apps_curd_test.js:98:3)
at jasmine.Env.describe_ (/usr/local/lib/node_modules/protractor/node_modules/minijasminenode/lib/jasmine-1.3.1.js:913:21)
at jasmine.Env.describe (/usr/local/lib/node_modules/protractor/node_modules/minijasminenode/lib/jasmine-1.3.1.js:898:15)
at describe (/usr/local/lib/node_modules/protractor/node_modules/minijasminenode/lib/jasmine-1.3.1.js:658:27)
at Object.<anonymous> (/Users/mohsen/apigee/apigee_ui/webui/platform/test/protractor/tests/developer_apps/basic_developer_apps_curd_test.js:5:1)
Failed. |
I just realized you're removing elements with the clicks. The easiest way that I can think of doing this is doing an each(), but from the last element to the first
although now that you know why it broke and how it works, you can fix it in a number of ways. |
Thank you for looking into this. Why |
Isn't that what your test is doing? i.e. clicking on the buttons to 'deletes the app'. |
Yes it deletes the row, So basically when I use |
No. findElement returned the raw webelement from webdriver. |
Can you elaborate on this change some more? var listOfThings = [];
$$('.list-of-things').then(function (things) {
_.forEach(things, function (thing) {
return thing.$('a').getAttribute('href').then(function (link) {
listOfThings.push(link.slice(link.indexOf('?') + 1));
});
});
return listOfThings;
}); Is this no longer valid? Because I'm pretty sure this still works in my some of my code. |
Your snippet should work; it doesn't? |
Ok, so here's a function I have in my elementByNumber: {
value: function (rowNumber) {
var page = this;
return $$(this.cssRowSelector + '.data-row-' + rowNumber).then(function (row) {
console.log(row[0]);
if (!row.length) {
return page.length.then(function (length) {
page.InvalidRowNumberException.thro(rowNumber + ' -- Valid rows are 1 - ' + length);
});
}
return row[0];
});
}
} I've added a
This is from protractor version 0.24.1 Now when I change my version to 0.20.1, and run the same test, I get this:
There's also some other changes that have occurred that are causing me issues, but that's a different topic. |
You don't see '$' and '$$' when you call With regards to your 'some other issues'. Feel free to open a new issue, or if it's just a question, stackoverflow is great for asking those. |
Ok. |
Looks like everything is resolved, so closing (btw #935 will make errors like this more apparent) |
@hankduan while your method for iteration in items work it's very verbose. I used the "async recursion" to avoid code complexity. I put it here as a reference it('should not have any Organization Roles leftovers', function () {
browser.get('#/' + config.org_name + '/roles');
function deleteRow(){
$('button.delete-role-button').click();
modal.confirm();
return $$('.user-role-row').count().then(function (count){
if(count) { deleteRow(); }
});
}
deleteRow();
expect($$('.user-role-row').count()).toBe(0); |
I used to use a syntax like this in my tests:
Now I'm getting the following error:
The text was updated successfully, but these errors were encountered: