Best Python code snippet using playwright-python
jquery.flot.touch.js
Source: jquery.flot.touch.js
1/* global jQuery */2(function($) {3 'use strict';4 var options = {5 propagateSupportedGesture: false6 };7 function init(plot) {8 plot.hooks.processOptions.push(initTouchNavigation);9 }10 function initTouchNavigation(plot, options) {11 var gestureState = {12 twoTouches: false,13 currentTapStart: { x: 0, y: 0 },14 currentTapEnd: { x: 0, y: 0 },15 prevTap: { x: 0, y: 0 },16 currentTap: { x: 0, y: 0 },17 interceptedLongTap: false,18 isUnsupportedGesture: false,19 prevTapTime: null,20 tapStartTime: null,21 longTapTriggerId: null22 },23 maxDistanceBetweenTaps = 20,24 maxIntervalBetweenTaps = 500,25 maxLongTapDistance = 20,26 minLongTapDuration = 1500,27 pressedTapDuration = 125,28 mainEventHolder;29 function interpretGestures(e) {30 var o = plot.getOptions();31 if (!o.pan.active && !o.zoom.active) {32 return;33 }34 updateOnMultipleTouches(e);35 mainEventHolder.dispatchEvent(new CustomEvent('touchevent', { detail: e }));36 if (isPinchEvent(e)) {37 executeAction(e, 'pinch');38 } else {39 executeAction(e, 'pan');40 if (!wasPinchEvent(e)) {41 if (isDoubleTap(e)) {42 executeAction(e, 'doubleTap');43 }44 executeAction(e, 'tap');45 executeAction(e, 'longTap');46 }47 }48 }49 function executeAction(e, gesture) {50 switch (gesture) {51 case 'pan':52 pan[e.type](e);53 break;54 case 'pinch':55 pinch[e.type](e);56 break;57 case 'doubleTap':58 doubleTap.onDoubleTap(e);59 break;60 case 'longTap':61 longTap[e.type](e);62 break;63 case 'tap':64 tap[e.type](e);65 break;66 }67 }68 function bindEvents(plot, eventHolder) {69 mainEventHolder = eventHolder[0];70 eventHolder[0].addEventListener('touchstart', interpretGestures, false);71 eventHolder[0].addEventListener('touchmove', interpretGestures, false);72 eventHolder[0].addEventListener('touchend', interpretGestures, false);73 }74 function shutdown(plot, eventHolder) {75 eventHolder[0].removeEventListener('touchstart', interpretGestures);76 eventHolder[0].removeEventListener('touchmove', interpretGestures);77 eventHolder[0].removeEventListener('touchend', interpretGestures);78 if (gestureState.longTapTriggerId) {79 clearTimeout(gestureState.longTapTriggerId);80 gestureState.longTapTriggerId = null;81 }82 }83 var pan = {84 touchstart: function(e) {85 updatePrevForDoubleTap();86 updateCurrentForDoubleTap(e);87 updateStateForLongTapStart(e);88 mainEventHolder.dispatchEvent(new CustomEvent('panstart', { detail: e }));89 },90 touchmove: function(e) {91 preventEventBehaviors(e);92 updateCurrentForDoubleTap(e);93 updateStateForLongTapEnd(e);94 if (!gestureState.isUnsupportedGesture) {95 mainEventHolder.dispatchEvent(new CustomEvent('pandrag', { detail: e }));96 }97 },98 touchend: function(e) {99 preventEventBehaviors(e);100 if (wasPinchEvent(e)) {101 mainEventHolder.dispatchEvent(new CustomEvent('pinchend', { detail: e }));102 mainEventHolder.dispatchEvent(new CustomEvent('panstart', { detail: e }));103 } else if (noTouchActive(e)) {104 mainEventHolder.dispatchEvent(new CustomEvent('panend', { detail: e }));105 }106 }107 };108 var pinch = {109 touchstart: function(e) {110 mainEventHolder.dispatchEvent(new CustomEvent('pinchstart', { detail: e }));111 },112 touchmove: function(e) {113 preventEventBehaviors(e);114 gestureState.twoTouches = isPinchEvent(e);115 if (!gestureState.isUnsupportedGesture) {116 mainEventHolder.dispatchEvent(new CustomEvent('pinchdrag', { detail: e }));117 }118 },119 touchend: function(e) {120 preventEventBehaviors(e);121 }122 };123 var doubleTap = {124 onDoubleTap: function(e) {125 preventEventBehaviors(e);126 mainEventHolder.dispatchEvent(new CustomEvent('doubletap', { detail: e }));127 }128 };129 var longTap = {130 touchstart: function(e) {131 longTap.waitForLongTap(e);132 },133 touchmove: function(e) {134 },135 touchend: function(e) {136 if (gestureState.longTapTriggerId) {137 clearTimeout(gestureState.longTapTriggerId);138 gestureState.longTapTriggerId = null;139 }140 },141 isLongTap: function(e) {142 var currentTime = new Date().getTime(),143 tapDuration = currentTime - gestureState.tapStartTime;144 if (tapDuration >= minLongTapDuration && !gestureState.interceptedLongTap) {145 if (distance(gestureState.currentTapStart.x, gestureState.currentTapStart.y, gestureState.currentTapEnd.x, gestureState.currentTapEnd.y) < maxLongTapDistance) {146 gestureState.interceptedLongTap = true;147 return true;148 }149 }150 return false;151 },152 waitForLongTap: function(e) {153 var longTapTrigger = function() {154 if (longTap.isLongTap(e)) {155 mainEventHolder.dispatchEvent(new CustomEvent('longtap', { detail: e }));156 }157 gestureState.longTapTriggerId = null;158 };159 if (!gestureState.longTapTriggerId) {160 gestureState.longTapTriggerId = setTimeout(longTapTrigger, minLongTapDuration);161 }162 }163 };164 var tap = {165 touchstart: function(e) {166 gestureState.tapStartTime = new Date().getTime();167 },168 touchmove: function(e) {169 },170 touchend: function(e) {171 if (tap.isTap(e)) {172 mainEventHolder.dispatchEvent(new CustomEvent('tap', { detail: e }));173 preventEventBehaviors(e);174 }175 },176 isTap: function(e) {177 var currentTime = new Date().getTime(),178 tapDuration = currentTime - gestureState.tapStartTime;179 if (tapDuration <= pressedTapDuration) {180 if (distance(gestureState.currentTapStart.x, gestureState.currentTapStart.y, gestureState.currentTapEnd.x, gestureState.currentTapEnd.y) < maxLongTapDistance) {181 return true;182 }183 }184 return false;185 }186 };187 if (options.pan.enableTouch === true || options.zoom.enableTouch) {188 plot.hooks.bindEvents.push(bindEvents);189 plot.hooks.shutdown.push(shutdown);190 };191 function updatePrevForDoubleTap() {192 gestureState.prevTap = {193 x: gestureState.currentTap.x,194 y: gestureState.currentTap.y195 };196 };197 function updateCurrentForDoubleTap(e) {198 gestureState.currentTap = {199 x: e.touches[0].pageX,200 y: e.touches[0].pageY201 };202 }203 function updateStateForLongTapStart(e) {204 gestureState.tapStartTime = new Date().getTime();205 gestureState.interceptedLongTap = false;206 gestureState.currentTapStart = {207 x: e.touches[0].pageX,208 y: e.touches[0].pageY209 };210 gestureState.currentTapEnd = {211 x: e.touches[0].pageX,212 y: e.touches[0].pageY213 };214 };215 function updateStateForLongTapEnd(e) {216 gestureState.currentTapEnd = {217 x: e.touches[0].pageX,218 y: e.touches[0].pageY219 };220 };221 function isDoubleTap(e) {222 var currentTime = new Date().getTime(),223 intervalBetweenTaps = currentTime - gestureState.prevTapTime;224 if (intervalBetweenTaps >= 0 && intervalBetweenTaps < maxIntervalBetweenTaps) {225 if (distance(gestureState.prevTap.x, gestureState.prevTap.y, gestureState.currentTap.x, gestureState.currentTap.y) < maxDistanceBetweenTaps) {226 e.firstTouch = gestureState.prevTap;227 e.secondTouch = gestureState.currentTap;228 return true;229 }230 }231 gestureState.prevTapTime = currentTime;232 return false;233 }234 function preventEventBehaviors(e) {235 if (!gestureState.isUnsupportedGesture) {236 e.preventDefault();237 if (!plot.getOptions().propagateSupportedGesture) {238 e.stopPropagation();239 }240 }241 }242 function distance(x1, y1, x2, y2) {243 return Math.sqrt((x1 - x2) * (x1 - x2) + (y1 - y2) * (y1 - y2));244 }245 function noTouchActive(e) {246 return (e.touches && e.touches.length === 0);247 }248 function wasPinchEvent(e) {249 return (gestureState.twoTouches && e.touches.length === 1);250 }251 function updateOnMultipleTouches(e) {252 if (e.touches.length >= 3) {253 gestureState.isUnsupportedGesture = true;254 } else {255 gestureState.isUnsupportedGesture = false;256 }257 }258 function isPinchEvent(e) {259 if (e.touches && e.touches.length >= 2) {260 if (e.touches[0].target === plot.getEventHolder() &&261 e.touches[1].target === plot.getEventHolder()) {262 return true;263 }264 }265 return false;266 }267 }268 $.plot.plugins.push({269 init: init,270 options: options,271 name: 'navigateTouch',272 version: '0.3'273 });...
tapTarget.js
Source: tapTarget.js
1(function ($) {2 var methods = {3 init: function (options) {4 return this.each(function() {5 var origin = $('#'+$(this).attr('data-activates'));6 var screen = $('body');7 // Creating tap target8 var tapTargetEl = $(this);9 var tapTargetWrapper = tapTargetEl.parent('.tap-target-wrapper');10 var tapTargetWave = tapTargetWrapper.find('.tap-target-wave');11 var tapTargetOriginEl = tapTargetWrapper.find('.tap-target-origin');12 var tapTargetContentEl = tapTargetEl.find('.tap-target-content');13 // Creating wrapper14 if (!tapTargetWrapper.length) {15 tapTargetWrapper = tapTargetEl.wrap($('<div class="tap-target-wrapper"></div>')).parent();16 }17 // Creating content18 if (!tapTargetContentEl.length) {19 tapTargetContentEl = $('<div class="tap-target-content"></div>');20 tapTargetEl.append(tapTargetContentEl);21 }22 // Creating foreground wave23 if (!tapTargetWave.length) {24 tapTargetWave = $('<div class="tap-target-wave"></div>');25 // Creating origin26 if (!tapTargetOriginEl.length) {27 tapTargetOriginEl = origin.clone(true, true);28 tapTargetOriginEl.addClass('tap-target-origin');29 tapTargetOriginEl.removeAttr('id');30 tapTargetOriginEl.removeAttr('style');31 tapTargetWave.append(tapTargetOriginEl);32 }33 tapTargetWrapper.append(tapTargetWave);34 }35 // Open36 var openTapTarget = function() {37 if (tapTargetWrapper.is('.open')) {38 return;39 }40 // Adding open class41 tapTargetWrapper.addClass('open');42 setTimeout(function() {43 tapTargetOriginEl.off('click.tapTarget').on('click.tapTarget', function(e) {44 closeTapTarget();45 tapTargetOriginEl.off('click.tapTarget');46 });47 $(document).off('click.tapTarget').on('click.tapTarget', function(e) {48 closeTapTarget();49 $(document).off('click.tapTarget');50 });51 var throttledCalc = Materialize.throttle(function() {52 calculateTapTarget();53 }, 200);54 $(window).off('resize.tapTarget').on('resize.tapTarget', throttledCalc);55 }, 0);56 };57 // Close58 var closeTapTarget = function(){59 if (!tapTargetWrapper.is('.open')) {60 return;61 }62 tapTargetWrapper.removeClass('open');63 tapTargetOriginEl.off('click.tapTarget')64 $(document).off('click.tapTarget');65 $(window).off('resize.tapTarget');66 };67 // Pre calculate68 var calculateTapTarget = function() {69 // Element or parent is fixed position?70 var isFixed = origin.css('position') === 'fixed';71 if (!isFixed) {72 var parents = origin.parents();73 for(var i = 0; i < parents.length; i++) {74 isFixed = $(parents[i]).css('position') == 'fixed';75 if (isFixed) {76 break;77 }78 }79 }80 // Calculating origin81 var originWidth = origin.outerWidth();82 var originHeight = origin.outerHeight();83 var originTop = isFixed ? origin.offset().top - $(document).scrollTop() : origin.offset().top;84 var originLeft = isFixed ? origin.offset().left - $(document).scrollLeft() : origin.offset().left;85 // Calculating screen86 var windowWidth = $(window).width();87 var windowHeight = $(window).height();88 var centerX = windowWidth / 2;89 var centerY = windowHeight / 2;90 var isLeft = originLeft <= centerX;91 var isRight = originLeft > centerX;92 var isTop = originTop <= centerY;93 var isBottom = originTop > centerY;94 var isCenterX = originLeft >= windowWidth*0.25 && originLeft <= windowWidth*0.75;95 var isCenterY = originTop >= windowHeight*0.25 && originTop <= windowHeight*0.75;96 // Calculating tap target97 var tapTargetWidth = tapTargetEl.outerWidth();98 var tapTargetHeight = tapTargetEl.outerHeight();99 var tapTargetTop = originTop + originHeight/2 - tapTargetHeight/2;100 var tapTargetLeft = originLeft + originWidth/2 - tapTargetWidth/2;101 var tapTargetPosition = isFixed ? 'fixed' : 'absolute';102 // Calculating content103 var tapTargetTextWidth = isCenterX ? tapTargetWidth : tapTargetWidth/2 + originWidth;104 var tapTargetTextHeight = tapTargetHeight/2;105 var tapTargetTextTop = isTop ? tapTargetHeight/2 : 0;106 var tapTargetTextBottom = 0;107 var tapTargetTextLeft = isLeft && !isCenterX ? tapTargetWidth/2 - originWidth : 0;108 var tapTargetTextRight = 0;109 var tapTargetTextPadding = originWidth;110 var tapTargetTextAlign = isBottom ? 'bottom' : 'top';111 // Calculating wave112 var tapTargetWaveWidth = originWidth > originHeight ? originWidth*2 : originWidth*2;113 var tapTargetWaveHeight = tapTargetWaveWidth;114 var tapTargetWaveTop = tapTargetHeight/2 - tapTargetWaveHeight/2;115 var tapTargetWaveLeft = tapTargetWidth/2 - tapTargetWaveWidth/2;116 // Setting tap target117 var tapTargetWrapperCssObj = {};118 tapTargetWrapperCssObj.top = isTop ? tapTargetTop : '';119 tapTargetWrapperCssObj.right = isRight ? windowWidth - tapTargetLeft - tapTargetWidth : '';120 tapTargetWrapperCssObj.bottom = isBottom ? windowHeight - tapTargetTop - tapTargetHeight : '';121 tapTargetWrapperCssObj.left = isLeft ? tapTargetLeft : '';122 tapTargetWrapperCssObj.position = tapTargetPosition;123 tapTargetWrapper.css(tapTargetWrapperCssObj);124 // Setting content125 tapTargetContentEl.css({126 width: tapTargetTextWidth,127 height: tapTargetTextHeight,128 top: tapTargetTextTop,129 right: tapTargetTextRight,130 bottom: tapTargetTextBottom,131 left: tapTargetTextLeft,132 padding: tapTargetTextPadding,133 verticalAlign: tapTargetTextAlign134 });135 // Setting wave136 tapTargetWave.css({137 top: tapTargetWaveTop,138 left: tapTargetWaveLeft,139 width: tapTargetWaveWidth,140 height: tapTargetWaveHeight141 });142 }143 if (options == 'open') {144 calculateTapTarget();145 openTapTarget();146 }147 if (options == 'close')148 closeTapTarget();149 });150 },151 open: function() {},152 close: function() {}153 };154 $.fn.tapTarget = function(methodOrOptions) {155 if (methods[methodOrOptions] || typeof methodOrOptions === 'object')156 return methods.init.apply( this, arguments );157 $.error( 'Method ' + methodOrOptions + ' does not exist on jQuery.tap-target' );158 };...
tap.js.uncompressed.js
Source: tap.js.uncompressed.js
...31 // | on(node, tap.hold, function(e){});32 // | on(node, tap.doubletap, function(e){});33 //34 // C. Used with dojox.gesture.tap.* directly35 // | dojox.gesture.tap(node, function(e){});36 // | dojox.gesture.tap.hold(node, function(e){});37 // | dojox.gesture.tap.doubletap(node, function(e){});38 //39 // Though there is always a default gesture instance after being required, e.g40 // | require(['dojox/gesture/tap'], function(){...});41 //42 // It's possible to create a new one with different parameter setting:43 // | var myTap = new dojox.gesture.tap.Tap({holdThreshold: 300});44 // | dojo.connect(node, myTap, function(e){});45 // | dojo.connect(node, myTap.hold, function(e){});46 // | dojo.connect(node, myTap.doubletap, function(e){});47 };48=====*/49kernel.experimental("dojox.gesture.tap");50// Declare an internal anonymous class which will only be exported51// by module return value e.g. dojox.gesture.tap.Tap...
tap.js
Source: tap.js
...31 // | on(node, tap.hold, function(e){});32 // | on(node, tap.doubletap, function(e){});33 //34 // C. Used with dojox.gesture.tap.* directly35 // | dojox.gesture.tap(node, function(e){});36 // | dojox.gesture.tap.hold(node, function(e){});37 // | dojox.gesture.tap.doubletap(node, function(e){});38 //39 // Though there is always a default gesture instance after being required, e.g40 // | require(['dojox/gesture/tap'], function(){...});41 //42 // It's possible to create a new one with different parameter setting:43 // | var myTap = new dojox.gesture.tap.Tap({holdThreshold: 300});44 // | dojo.connect(node, myTap, function(e){});45 // | dojo.connect(node, myTap.hold, function(e){});46 // | dojo.connect(node, myTap.doubletap, function(e){});47 };48=====*/49kernel.experimental("dojox.gesture.tap");50// Declare an internal anonymous class which will only be exported51// by module return value e.g. dojox.gesture.tap.Tap...
Playwright error connection refused in docker
playwright-python advanced setup
How to select an input according to a parent sibling label
Error when installing Microsoft Playwright
Trouble waiting for changes to complete that are triggered by Python Playwright `select_option`
Capturing and Storing Request Data Using Playwright for Python
Can Playwright be used to launch a browser instance
Trouble in Clicking on Log in Google Button of Pop Up Menu Playwright Python
Scrapy Playwright get date by clicking button
React locator example
I solved my problem. In fact my docker container (frontend) is called "app" which is also domain name of fronend application. My application is running locally on http. Chromium and geko drivers force httpS connection for some domain names one of which is "app". So i have to change name for my docker container wich contains frontend application.
Check out the latest blogs from LambdaTest on this topic:
The sky’s the limit (and even beyond that) when you want to run test automation. Technology has developed so much that you can reduce time and stay more productive than you used to 10 years ago. You needn’t put up with the limitations brought to you by Selenium if that’s your go-to automation testing tool. Instead, you can pick from various test automation frameworks and tools to write effective test cases and run them successfully.
When it comes to web automation testing, there are a number of frameworks like Selenium, Cypress, PlayWright, Puppeteer, etc., that make it to the ‘preferred list’ of frameworks. The choice of test automation framework depends on a range of parameters like type, complexity, scale, along with the framework expertise available within the team. However, it’s no surprise that Selenium is still the most preferred framework among developers and QAs.
Playwright is a framework that I’ve always heard great things about but never had a chance to pick up until earlier this year. And since then, it’s become one of my favorite test automation frameworks to use when building a new automation project. It’s easy to set up, feature-packed, and one of the fastest, most reliable frameworks I’ve worked with.
The speed at which tests are executed and the “dearth of smartness” in testing are the two major problems developers and testers encounter.
With the rapidly evolving technology due to its ever-increasing demand in today’s world, Digital Security has become a major concern for the Software Industry. There are various ways through which Digital Security can be achieved, Captcha being one of them.Captcha is easy for humans to solve but hard for “bots” and other malicious software to figure out. However, Captcha has always been tricky for the testers to automate, as many of them don’t know how to handle captcha in Selenium or using any other test automation framework.
LambdaTest’s Playwright tutorial will give you a broader idea about the Playwright automation framework, its unique features, and use cases with examples to exceed your understanding of Playwright testing. This tutorial will give A to Z guidance, from installing the Playwright framework to some best practices and advanced concepts.
Get 100 minutes of automation test minutes FREE!!