How to use retryIfEnabled method of com.intuit.karate.driver.playwright.PlaywrightDriver class

Best Karate code snippet using com.intuit.karate.driver.playwright.PlaywrightDriver.retryIfEnabled

Source:PlaywrightDriver.java Github

copy

Full Screen

...332 @Override333 public List<String> elementIds(String locator) {334 throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.335 }336 private void retryIfEnabled(String locator) {337 if (options.isRetryEnabled()) {338 waitFor(locator); // will throw exception if not found339 }340 if (options.highlight) {341 // highlight(locator, options.highlightDuration); // instead of this342 String highlightJs = options.highlight(locator, options.highlightDuration);343 evalOnce(highlightJs, true, true); // do it safely, i.e. fire and forget344 }345 }346 @Override347 public void setUrl(String url) {348 frame("goto").param("url", url).param("waitUntil", "load").send();349 }350 @Override351 public void activate() {352 page("bringToFront").send();353 }354 @Override355 public void refresh() {356 page("reload").param("waitUntil", "load").send();357 }358 @Override359 public void reload() {360 refresh(); // TODO ignore cache ?361 }362 @Override363 public void back() {364 page("goBack").param("waitUntil", "load").send();365 }366 @Override367 public void forward() {368 page("goForward").param("waitUntil", "load").send();369 }370 @Override371 public void maximize() {372 // https://github.com/microsoft/playwright/issues/1086373 }374 @Override375 public void minimize() {376 // see maximize()377 }378 @Override379 public void fullscreen() {380 // TODO JS381 }382 @Override383 public void close() {384 page("close").send();385 }386 @Override387 public void quit() {388 if (terminated) {389 return;390 }391 terminated = true;392 method("close", browserGuid).sendWithoutWaiting();393 client.close();394 if (command != null) {395 // cannot force else node process does not terminate gracefully396 command.close(false);397 }398 }399 @Override400 public String property(String id, String name) {401 retryIfEnabled(id);402 return eval(DriverOptions.selector(id) + "['" + name + "']").getResultValue();403 }404 @Override405 public String html(String id) {406 return property(id, "outerHTML");407 }408 @Override409 public String text(String id) {410 return property(id, "textContent");411 }412 @Override413 public String value(String locator) {414 return property(locator, "value");415 }416 @Override417 public String getUrl() {418 return eval("document.location.href").getResultValue();419 }420 @Override421 public void setDimensions(Map<String, Object> map) {422 // todo423 }424 @Override425 public String getTitle() {426 return eval("document.title").getResultValue();427 }428 @Override429 public Element click(String locator) {430 retryIfEnabled(locator);431 eval(DriverOptions.selector(locator) + ".click()");432 return DriverElement.locatorExists(this, locator);433 }434 @Override435 public Element value(String locator, String value) {436 retryIfEnabled(locator);437 eval(DriverOptions.selector(locator) + ".value = '" + value + "'");438 return DriverElement.locatorExists(this, locator);439 }440 @Override441 public String attribute(String id, String name) {442 retryIfEnabled(id);443 return eval(DriverOptions.selector(id) + ".getAttribute('" + name + "')").getResultValue();444 }445 @Override446 public boolean enabled(String id) {447 retryIfEnabled(id);448 PlaywrightMessage pwm = eval(DriverOptions.selector(id) + ".disabled");449 Boolean disabled = pwm.getResultValue();450 return !disabled;451 }452 @Override453 public boolean waitUntil(String expression) {454 return options.retry(() -> {455 try {456 return eval(expression, true).getResultValue();457 } catch (Exception e) {458 logger.warn("waitUntil evaluate failed: {}", e.getMessage());459 return false;460 }461 }, b -> b, "waitUntil (js)", true);462 }463 @Override464 public Driver submit() {465 submit = true;466 return this;467 }468 @Override469 public Element focus(String locator) {470 retryIfEnabled(locator);471 eval(options.focusJs(locator));472 return DriverElement.locatorExists(this, locator);473 }474 @Override475 public Element clear(String locator) {476 eval(DriverOptions.selector(locator) + ".value = ''");477 return DriverElement.locatorExists(this, locator);478 }479 @Override480 public Map<String, Object> position(String locator) {481 return position(locator, false);482 }483 @Override484 public Map<String, Object> position(String locator, boolean relative) {485 boolean submitTemp = submit; // in case we are prepping for a submit().mouse(locator).click()486 submit = false;487 retryIfEnabled(locator);488 Map<String, Object> map = eval(relative ? DriverOptions.getRelativePositionJs(locator) : DriverOptions.getPositionJs(locator)).getResultValue();489 submit = submitTemp;490 return map;491 }492 private PlaywrightMessage evalFrame(String frameGuid, String expression) {493 return method("evaluateExpression", frameGuid)494 .param("expression", expression)495 .param("isFunction", false)496 .param("arg", NO_ARGS).send();497 }498 @Override499 public void switchPage(String titleOrUrl) {500 if (titleOrUrl == null) {501 return;502 }503 for (Map.Entry<String, Set<String>> entry : pageFrames.entrySet()) {504 String pageGuid = entry.getKey();505 String frameGuid = entry.getValue().iterator().next();506 String title = evalFrame(frameGuid, "document.title").getResultValue();507 if (title != null && title.contains(titleOrUrl)) {508 currentPage = pageGuid;509 currentFrame = frameGuid;510 activate();511 return;512 }513 String url = evalFrame(frameGuid, "document.location.href").getResultValue();514 if (url != null && url.contains(titleOrUrl)) {515 currentPage = pageGuid;516 currentFrame = frameGuid;517 activate();518 return;519 }520 }521 logger.warn("failed to find page by title / url: {}", titleOrUrl);522 }523 @Override524 public void switchPage(int index) {525 if (index == -1 || index >= pageFrames.size()) {526 logger.warn("not switching page for size {}: {}", pageFrames.size(), index);527 return;528 }529 List<String> temp = getPages();530 currentPage = temp.get(index);531 currentFrame = pageFrames.get(currentPage).iterator().next();532 activate();533 }534 private void waitForFrame(String previousFrame) {535 String previousFrameUrl = frameInfo.get(previousFrame).url;536 logger.debug("waiting for frame url to switch from: {} - {}", previousFrame, previousFrameUrl);537 Integer retryInterval = options.getRetryInterval();538 options.setRetryInterval(1000); // reduce retry interval for this special case539 options.retry(() -> evalFrame(currentFrame, "document.location.href"),540 pwm -> !pwm.isError() && !pwm.getResultValue().equals(previousFrameUrl), "waiting for frame context", false);541 options.setRetryInterval(retryInterval); // restore542 }543 @Override544 public void switchFrame(int index) {545 String previousFrame = currentFrame;546 List<String> temp = new ArrayList(pageFrames.get(currentPage));547 index = index + 1; // the root frame is always zero, api here is consistent with webdriver etc548 if (index < temp.size()) {549 currentFrame = temp.get(index);550 logger.debug("switched to frame: {} - pages: {}", currentFrame, pageFrames);551 waitForFrame(previousFrame);552 } else {553 logger.warn("not switching frame for size {}: {}", temp.size(), index);554 }555 }556 @Override557 public void switchFrame(String locator) {558 String previousFrame = currentFrame;559 if (locator == null) {560 switchFrame(-1);561 } else {562 if (locator.startsWith("#")) { // TODO get reference to frame element via locator563 locator = locator.substring(1);564 }565 for (Frame frame : frameInfo.values()) {566 if (frame.url.contains(locator) || frame.name.contains(locator)) {567 currentFrame = frame.frameGuid;568 logger.debug("switched to frame: {} - pages: {}", currentFrame, pageFrames);569 waitForFrame(previousFrame);570 return;571 }572 }573 }574 }575 @Override576 public Map<String, Object> getDimensions() {577 logger.warn("getDimensions() not supported");578 return Collections.EMPTY_MAP;579 }580 @Override581 public List<String> getPages() {582 return new ArrayList(pageFrames.keySet());583 }584 @Override585 public String getDialogText() {586 return currentDialogText;587 }588 @Override589 public byte[] screenshot(boolean embed) {590 return screenshot(null, embed);591 }592 @Override593 public Map<String, Object> cookie(String name) {594 List<Map> list = getCookies();595 if (list == null) {596 return null;597 }598 for (Map<String, Object> map : list) {599 if (map != null && name.equals(map.get("name"))) {600 return map;601 }602 }603 return null;604 }605 @Override606 public void cookie(Map<String, Object> cookie) {607 if (cookie.get("url") == null && cookie.get("domain") == null) {608 cookie = new HashMap(cookie); // don't mutate test609 cookie.put("url", getUrl());610 }611 method("addCookies", browserContextGuid).param("cookies", Collections.singletonList(cookie)).send();612 }613 @Override614 public void deleteCookie(String name) {615 List<Map> cookies = getCookies();616 List<Map> filtered = new ArrayList(cookies.size());617 for (Map m : cookies) {618 if (!name.equals(m.get("name"))) {619 filtered.add(m);620 }621 }622 clearCookies();623 method("addCookies", browserContextGuid).param("cookies", filtered).send();624 }625 @Override626 public void clearCookies() {627 method("clearCookies", browserContextGuid).send();628 }629 @Override630 public List<Map> getCookies() {631 return method("cookies", browserContextGuid).param("urls", Collections.EMPTY_LIST).send().getResult("cookies", List.class);632 }633 @Override634 public void dialog(boolean accept) {635 dialog(accept, null);636 }637 @Override638 public void dialog(boolean accept, String input) {639 this.dialogAccept = accept;640 this.dialogInput = input;641 }642 @Override643 public Element input(String locator, String value) {644 retryIfEnabled(locator);645 // focus646 eval(options.focusJs(locator));647 Input input = new Input(value);648 Set<String> pressed = new HashSet();649 while (input.hasNext()) {650 char c = input.next();651 String keyValue = Keys.keyValue(c);652 if (keyValue != null) {653 if (Keys.isModifier(c)) {654 pressed.add(keyValue);655 page("keyboardDown").param("key", keyValue).send();656 } else {657 page("keyboardPress").param("key", keyValue).send();658 }659 } else {660 page("keyboardType").param("text", c + "").send();661 }662 }663 for (String keyValue : pressed) {664 page("keyboardUp").param("key", keyValue).send();665 }666 return DriverElement.locatorExists(this, locator);667 }668 protected int currentMouseXpos;669 protected int currentMouseYpos;670 @Override671 public void actions(List<Map<String, Object>> sequence) {672 boolean submitRequested = submit;673 submit = false; // make sure only LAST action is handled as a submit()674 for (Map<String, Object> map : sequence) {675 List<Map<String, Object>> actions = (List) map.get("actions");676 if (actions == null) {677 logger.warn("no actions property found: {}", sequence);678 return;679 }680 Iterator<Map<String, Object>> iterator = actions.iterator();681 while (iterator.hasNext()) {682 Map<String, Object> action = iterator.next();683 String type = (String) action.get("type");684 if (type == null) {685 logger.warn("no type property found: {}", action);686 continue;687 }688 String pageAction;689 switch (type) {690 case "pointerMove":691 pageAction = "mouseMove";692 break;693 case "pointerDown":694 pageAction = "mouseDown";695 break;696 case "pointerUp":697 pageAction = "mouseUp";698 break;699 default:700 logger.warn("unexpected action type: {}", action);701 continue;702 }703 Integer x = (Integer) action.get("x");704 Integer y = (Integer) action.get("y");705 if (x != null) {706 currentMouseXpos = x;707 }708 if (y != null) {709 currentMouseYpos = y;710 }711 Integer duration = (Integer) action.get("duration");712 PlaywrightMessage toSend = page(pageAction);713 if ("mouseMove".equals(pageAction) && x != null && y != null) {714 toSend.param("x", x).param("y", y);715 } else {716 toSend.params(Collections.EMPTY_MAP);717 }718 if (!iterator.hasNext() && submitRequested) {719 submit = true;720 }721 toSend.send();722 if (duration != null) {723 options.sleep(duration);724 }725 }726 }727 }728 @Override729 public Element select(String locator, String text) {730 retryIfEnabled(locator);731 eval(options.optionSelector(locator, text));732 return DriverElement.locatorExists(this, locator);733 }734 @Override735 public Element select(String locator, int index) {736 retryIfEnabled(locator);737 eval(options.optionSelector(locator, index));738 return DriverElement.locatorExists(this, locator);739 }740 @Override741 public byte[] screenshot(String locator, boolean embed) {742 PlaywrightMessage toSend = page("screenshot").param("type", "png");743 if (locator != null) {744 toSend.param("clip", position(locator));745 }746 PlaywrightMessage pwm = toSend.send();747 String data = pwm.getResult("binary");748 byte[] bytes = Base64.getDecoder().decode(data);749 if (embed) {750 getRuntime().embed(bytes, ResourceType.PNG);...

Full Screen

Full Screen

retryIfEnabled

Using AI Code Generation

copy

Full Screen

1import com.intuit.karate.driver.playwright.PlaywrightDriver2import com.intuit.karate.driver.playwright.PlaywrightOptions3import com.intuit.karate.driver.playwright.PlaywrightOptionsBuilder4def options = new PlaywrightOptionsBuilder()5PlaywrightOptions playwrightOptions = options.build()6def driver = new PlaywrightDriver(playwrightOptions)7driver.start()8driver.quit()9import com.intuit.karate.driver.appium.AppiumDriver10import com.intuit.karate.driver.appium.AppiumOptions11import com.intuit.karate.driver.appium.AppiumOptionsBuilder12def options = new AppiumOptionsBuilder()13AppiumOptions appiumOptions = options.build()14def driver = new AppiumDriver(appiumOptions)15driver.start()16driver.quit()17import com.intuit.karate.driver.webdriver.WebDriverDriver18import com.intuit.karate.driver.webdriver.WebDriverOptions19import com.intuit.karate.driver.webdriver.WebDriverOptionsBuilder20def options = new WebDriverOptionsBuilder()21WebDriverOptions webDriverOptions = options.build()22def driver = new WebDriverDriver(webDriverOptions)23driver.start()24driver.quit()25import com.intuit.karate.driver.selenium.SeleniumDriver26import com.intuit.karate.driver.selenium.SeleniumOptions27import com.intuit.karate.driver.selenium.SeleniumOptionsBuilder28def options = new SeleniumOptionsBuilder()29SeleniumOptions seleniumOptions = options.build()30def driver = new SeleniumDriver(seleniumOptions)31driver.start()32driver.quit()33import com.intuit.karate.driver.selenium.SeleniumDriver34import com.intuit.karate.driver.selenium.SeleniumOptions35import com.intuit.karate.driver.selenium.SeleniumOptionsBuilder36def options = new SeleniumOptionsBuilder()

Full Screen

Full Screen

retryIfEnabled

Using AI Code Generation

copy

Full Screen

1 * driver.findElement('input[name="q"]').sendKeys('Karate')2 * driver.findElement('input[name="q"]').sendKeys('\uE007')3 * driver.findElement('div[class="yuRUbf"] > a').click()4 * driver.quit()5 * driver.findElement('input[name="q"]').sendKeys('Karate')6 * driver.findElement('input[name="q"]').sendKeys('\uE007')7 * driver.findElement('div[class="yuRUbf"] > a').click()8 * driver.quit()9 * driver.findElement('input[name="q"]').sendKeys('Karate')10 * driver.findElement('input[name="q"]').sendKeys('\uE007')11 * driver.findElement('div[class="yuRUbf"] > a').click()12 * driver.quit()13 * driver.findElement('input[name="q"]').sendKeys('Karate')

Full Screen

Full Screen

retryIfEnabled

Using AI Code Generation

copy

Full Screen

1retryIfEnabled {2}3retryIfEnabled {4}5retryIfEnabled {6}7retryIfEnabled {8}9retryIfEnabled {10}

Full Screen

Full Screen

retryIfEnabled

Using AI Code Generation

copy

Full Screen

1* def driver = karate.driver('playwright')2* driver.init()3* driver.retryIfEnabled()4* driver.get(url)5* def title = driver.getTitle()6* driver.get(url)7* def title = driver.getTitle()8* driver.get(url)9* def title = driver.getTitle()10* driver.get(url)

Full Screen

Full Screen

retryIfEnabled

Using AI Code Generation

copy

Full Screen

1def retryIfEnabled = karate.get('retryIfEnabled')2if(retryIfEnabled == null) {3}4def retryIfEnabled = karate.get('retryIfEnabled')5if(retryIfEnabled == null) {6}7def retryIfEnabled = karate.get('retryIfEnabled')8if(retryIfEnabled == null) {9}10def retryIfEnabled = karate.get('retryIfEnabled')11if(retryIfEnabled == null) {12}13def retryIfEnabled = karate.get('retryIfEnabled')14if(retryIfEnabled == null) {15}16def retryIfEnabled = karate.get('retryIfEnabled')17if(retryIfEnabled == null) {18}

Full Screen

Full Screen

retryIfEnabled

Using AI Code Generation

copy

Full Screen

1* def driver = karate.driver('playwright')2* driver.retryIfEnabled(3, function() {3})4* def driver = karate.driver('playwright')5* driver.retryIfEnabled(3, function() {6})7* def driver = karate.driver('playwright')8* driver.retryIfEnabled(3, function() {9})10* def driver = karate.driver('playwright')11* driver.retryIfEnabled(3, function() {12})13* def driver = karate.driver('playwright')14* driver.retryIfEnabled(3, function() {

Full Screen

Full Screen

Automation Testing Tutorials

Learn to execute automation testing from scratch with LambdaTest Learning Hub. Right from setting up the prerequisites to run your first automation test, to following best practices and diving deeper into advanced test scenarios. LambdaTest Learning Hubs compile a list of step-by-step guides to help you be proficient with different test automation frameworks i.e. Selenium, Cypress, TestNG etc.

LambdaTest Learning Hubs:

YouTube

You could also refer to video tutorials over LambdaTest YouTube channel to get step by step demonstration from industry experts.

Try LambdaTest Now !!

Get 100 minutes of automation test minutes FREE!!

Next-Gen App & Browser Testing Cloud

Was this article helpful?

Helpful

NotHelpful