javascript - Protractor custom locator fails to locate the element -


i have added custom data attribute elements need identify , interact using protractor. attribute data-test-id. created custom locator in onprepare callback in conf.js detect element. below:

onprepare: function () {     by.addlocator('testid', function(value, parentelement) {       parentelement = parentelement || document;       var nodes = parentelement.queryselectorall('[data-test-id]');       return array.prototype.filter.call(nodes, function(node) {         return (node.getattribute('[data-test-id]') === value);       });     });   } 

my angular app has h1 text home inside it. added data-test-id attribute it:

<h1 data-test-id="test-element">home</h1> 

here protractor test:

test.js:

describe('navigate website.', function() {     it('should have heading home', function() {         browser.get('http://localhost:8888/#/');         browser.waitforangular();          var textvalue = 'home';         var heading = element(by.testid('test-element'));          expect(heading.gettext()).toequal(textvalue);     }); }); 

conf.js:

exports.config = {   //directconnect: true,   seleniumaddress: 'http://localhost:4444/wd/hub',   // capabilities passed webdriver instance.   capabilities: {     'browsername': 'chrome'   },    // spec patterns relative current working directly when   // protractor called.   specs: ['test.js'],    // options passed jasmine-node.   jasminenodeopts: {     showcolors: true,     defaulttimeoutinterval: 30000   },    onprepare: function () {     by.addlocator('testid', function(value, parentelement) {       parentelement = parentelement || document;       var nodes = parentelement.queryselectorall('[data-test-id]');       return array.prototype.filter.call(nodes, function(node) {         return (node.getattribute('[data-test-id]') === value);       });     });   } }; 

when run sample test, following error:

1) navigate website. should have heading home
message: nosuchelementerror: no element found using locator: by.testid("test-element")

what doing wrong? how can fix issue , work?

when getting attribute, should ask data-test-id instead of [data-test-id]. looks copy-paste error.

replace:

return (node.getattribute('[data-test-id]') === value); 

with:

return (node.getattribute('data-test-id') === value); 

Comments

Popular posts from this blog

Magento/PHP - Get phones on all members in a customer group -

php - Bypass Geo Redirect for specific directories -

php - .htaccess mod_rewrite for dynamic url which has domain names -