css - NoSuchElementError: no such element: Unable to locate element for protractor -


element(by.xpath(("/html/body/div[2]/div[3]/md-content/md-card/md-card-content/div/div/div/div/md-custom-table/div/md-table-container/table/thead/tr/th[3]/span"))).click();

this code want make work.

this isxpath path of want clicked

/html/body/div[2]/div[3]/md-content/md-card/md-card-content/div/div/div/div/md-custom-table/div/md-table-container/table/thead/tr/th[3]/span

this error

message: failed: no element found using locator: by(xpath, /html/body/div[2]/div[3]/md-content/md-card/md-card-content/div/div/div/div/md-custom-table/div/md-table-container/table/thead/tr/th[3]/span) stack: nosuchelementerror: no element found using locator: by(xpath, /html/body/div[2]/div[3]/md-content/md-card/md-card-content/div/div/div/div/md-custom-table/div/md-table-container/table/thead/tr/th[3]/span) @ webdrivererror (/usr/lib/node_modules/protractor/node_modules/selenium-webdriver/lib/error.js:26:26) @ nosuchelementerror (/usr/lib/node_modules/protractor/node_modules/selenium-webdriver/lib/error.js:241:26) @ /usr/lib/node_modules/protractor/built/element.js:717:27 @ managedpromise.invokecallback_ (/usr/lib/node_modules/protractor/node_modules/selenium-webdriver/lib/promise.js:1379:14) @ taskqueue.execute_ (/usr/lib/node_modules/protractor/node_modules/selenium-webdriver/lib/promise.js:2913:14) @ taskqueue.executenext_ (/usr/lib/node_modules/protractor/node_modules/selenium-webdriver/lib/promise.js:2896:21) @ /usr/lib/node_modules/protractor/node_modules/selenium-webdriver/lib/promise.js:2775:27 @ /usr/lib/node_modules/protractor/node_modules/selenium-webdriver/lib/promise.js:639:7 @ process._tickcallback (internal/process/next_tick.js:103:7)error @ elementarrayfinder.applyaction_ (/usr/lib/node_modules/protractor/built/element.js:403:27) @ elementarrayfinder._this.(anonymous function) [as click] (/usr/lib/node_modules/protractor/built/element.js:101:30) @ elementfinder.(anonymous function) [as click] (/usr/lib/node_modules/protractor/built/element.js:740:22) @ object. (/home/vegan/hb-productupload/gateway/src/test/javascript/e2e/account/productdashboard/productdashboardcontrollerspec.js:36:47) @ /usr/lib/node_modules/protractor/node_modules/jasminewd2/index.js:94:23 @ new managedpromise (/usr/lib/node_modules/protractor/node_modules/selenium-webdriver/lib/promise.js:1082:7) @ controlflowexecute (/usr/lib/node_modules/protractor/node_modules/jasminewd2/index.js:80:18) @ taskqueue.execute_ (/usr/lib/node_modules/protractor/node_modules/selenium-webdriver/lib/promise.js:2913:14) @ taskqueue.executenext_ (/usr/lib/node_modules/protractor/node_modules/selenium-webdriver/lib/promise.js:2896:21) @ /usr/lib/node_modules/protractor/node_modules/selenium-webdriver/lib/promise.js:2820:25 from: task: run it("should able check product dashboard cta") in control flow @ object. (/usr/lib/node_modules/protractor/node_modules/jasminewd2/index.js:79:14) @ /usr/lib/node_modules/protractor/node_modules/jasminewd2/index.js:16:5 @ managedpromise.invokecallback_ (/usr/lib/node_modules/protractor/node_modules/selenium-webdriver/lib/promise.js:1379:14) @ taskqueue.execute_ (/usr/lib/node_modules/protractor/node_modules/selenium-webdriver/lib/promise.js:2913:14) @ taskqueue.executenext_ (/usr/lib/node_modules/protractor/node_modules/selenium-webdriver/lib/promise.js:2896:21) @ /usr/lib/node_modules/protractor/node_modules/selenium-webdriver/lib/promise.js:2775:27 asynchronous test: error @ suite. (/home/vegan/hb-productupload/gateway/src/test/javascript/e2e/account/productdashboard/productdashboardcontrollerspec.js:33:9) @ object. (/home/vegan/hb-productupload/gateway/src/test/javascript/e2e/account/productdashboard/productdashboardcontrollerspec.js:8:1) @ module._compile (module.js:413:34) @ object.module._extensions..js (module.js:422:10) @ module.load (module.js:357:32) @ function.module._load (module.js:314:12)

1 spec, 1 failure finished in 13.16 seconds

[15:19:25] i/launcher - 0 instance(s) of webdriver still running [15:19:25] i/launcher - chrome #01 failed 1 test(s) [15:19:25] i/launcher - overall: 1 failed spec(s) [15:19:25] e/launcher - process exited error code 1

so same place, html:

<span translate="" class="ng-scope ng-binding">number of products</span> 

this selecor

body > div.site-content > div.layout-column.flex > md-content > md-card > md-card-content > div > div > div > div > md-custom-table > div > md-table-container > table > thead > tr > th.md-column.ng-scope.ng-isolate-scope.flex.md-sort.md-active > span 

inerestingly same span, can click

 dashboardpageobject.element.all(by.css('[md-order-by="count"]')).get(1);.click();             browser.driver.sleep(28);             dashboardpageobject.element.all(by.css('[md-order-by="count"]')).get(1);.click(); 

it clicks 2 times dosnot wait 28 seconds.

i dont care selector xpath or css.

for example another

/html/body/div[2]/div[3]/header/md-content/md-tabs/md-tabs-wrapper/md-tabs-canvas/md-pagination-wrapper/md-tab-item[5]/span 

this workds

 element(by.xpath('/html/body/div[2]/div[3]/header/md-content/md-tabs/md-tabs-wrapper/md-tabs-canvas/md-pagination-wrapper/md-tab-item[5]/span')); 

first, mentioned above in comments, sleep() timer takes milliseconds, not seconds. waiting 0.28 seconds command. extend 28000 if want sleep 28 seconds.

however, that's not best approach. should use implicit waits in form of expected conditions tests efficient , execute in consistent manner.

you'll have decide method works best depending on nature of element trying click, end using presenceof() or visibilityof().

presenceof() waits appended dom

visibilityof() takes existing element , waits visible.

finally, xpath not great locator. may work in current test, xpath brittle it's subject change development continues. i'd advise find way locate element, since there aren't many attributes on particular element choose csscontainingtext()

so combining above:

var el = element(by.csscontainingtext('span', 'number of products')); var ec = protractor.expectedconditions; browser.wait(ec.presenceof(el), 5000);  // maximum wait of 5 seconds expect(something).toequal(your expected result); 

Comments

Popular posts from this blog

php - How to add and update images or image url in Volusion using Volusion API -

javascript - jQuery UI Splitter/Resizable for unlimited amount of columns -

javascript - IE9 error '$'is not defined -