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
Post a Comment