Best Python code snippet using robotframework-appiumlibrary_python
helper.sub.js
Source: helper.sub.js
1// Helpers called on the main test HTMLs.2// Functions in `RemoteContext.execute_script()`'s 1st argument are evaluated3// on the executors (`executor.html`), and helpers available on the executors4// are defined in `executor.html`.5const originSameOrigin =6 location.protocol === 'http:' ?7 'http://{{host}}:{{ports[http][0]}}' :8 'https://{{host}}:{{ports[https][0]}}';9const originSameSite =10 location.protocol === 'http:' ?11 'http://{{host}}:{{ports[http][1]}}' :12 'https://{{host}}:{{ports[https][1]}}';13const originCrossSite =14 location.protocol === 'http:' ?15 'http://{{hosts[alt][www]}}:{{ports[http][0]}}' :16 'https://{{hosts[alt][www]}}:{{ports[https][0]}}';17const executorPath =18 '/html/browsers/browsing-the-web/back-forward-cache/resources/executor.html?uuid=';19// Asserts that the executor `target` is (or isn't, respectively)20// restored from BFCache. These should be used in the following fashion:21// 1. Call prepareNavigation() on the executor `target`.22// 2. Navigate the executor to another page.23// 3. Navigate back to the executor `target`.24// 4. Call assert_bfcached() or assert_not_bfcached() on the main test HTML.25async function assert_bfcached(target) {26 const status = await getBFCachedStatus(target);27 assert_implements_optional(status === 'BFCached',28 "Should be BFCached but actually wasn't");29}30async function assert_not_bfcached(target) {31 const status = await getBFCachedStatus(target);32 assert_implements(status !== 'BFCached',33 'Should not be BFCached but actually was');34}35async function getBFCachedStatus(target) {36 const [loadCount, isPageshowFired, isPageshowPersisted] =37 await target.execute_script(() => [38 window.loadCount, window.isPageshowFired, window.isPageshowPersisted]);39 if (loadCount === 1 && isPageshowFired === true &&40 isPageshowPersisted === true) {41 return 'BFCached';42 } else if (loadCount === 2 && isPageshowFired === false) {43 return 'Not BFCached';44 } else {45 // This can occur for example when this is called before first navigating46 // away (loadCount = 1, isPageshowFired = false), e.g. when47 // 1. sending a script for navigation and then48 // 2. calling getBFCachedStatus() without waiting for the completion of49 // the script on the `target` page.50 assert_unreached(51 `Got unexpected BFCache status: loadCount = ${loadCount}, ` +52 `isPageshowFired = ${isPageshowFired}, ` +53 `isPageshowPersisted = ${isPageshowPersisted}`);54 }55}56// Always call `await remoteContext.execute_script(waitForPageShow);` after57// triggering to navigation to the page, to wait for pageshow event on the58// remote context.59const waitForPageShow = () => window.pageShowPromise;60// Run a test that navigates A->B->A:61// 1. Page A is opened by `params.openFunc(url)`.62// 2. `params.funcBeforeNavigation` is executed on page A.63// 3. The window is navigated to page B on `params.targetOrigin`.64// 4. The window is back navigated to page A (expecting BFCached).65//66// Events `params.events` (an array of strings) are observed on page A and67// `params.expectedEvents` (an array of strings) is expected to be recorded.68// See `event-recorder.js` for event recording.69//70// Parameters can be omitted. See `defaultParams` below for default.71function runEventTest(params, description) {72 const defaultParams = {73 openFunc(url) {74 window.open(75 `${url}&events=${this.events.join(',')}`,76 '_blank',77 'noopener'78 )79 },80 events: ['pagehide', 'pageshow', 'load'],81 expectedEvents: [82 'window.load',83 'window.pageshow',84 'window.pagehide.persisted',85 'window.pageshow.persisted'86 ],87 async funcAfterAssertion(pageA) {88 assert_array_equals(89 await pageA.execute_script(() => getRecordedEvents()),90 this.expectedEvents);91 }92 }93 // Apply defaults.94 params = { ...defaultParams, ...params };95 runBfcacheTest(params, description);96}97async function navigateAndThenBack(pageA, pageB, urlB) {98 await pageA.execute_script(99 (url) => {100 prepareNavigation(() => {101 location.href = url;102 });103 },104 [urlB]105 );106 await pageB.execute_script(waitForPageShow);107 await pageB.execute_script(108 () => {109 prepareNavigation(() => { history.back(); });110 }111 );112 await pageA.execute_script(waitForPageShow);113}114function runBfcacheTest(params, description) {115 const defaultParams = {116 openFunc: url => window.open(url, '_blank', 'noopener'),117 scripts: [],118 funcBeforeNavigation: () => {},119 targetOrigin: originCrossSite,120 shouldBeCached: true,121 funcAfterAssertion: () => {},122 }123 // Apply defaults.124 params = {...defaultParams, ...params };125 promise_test(async t => {126 const pageA = new RemoteContext(token());127 const pageB = new RemoteContext(token());128 const urlA = executorPath + pageA.context_id;129 const urlB = params.targetOrigin + executorPath + pageB.context_id;130 params.openFunc(urlA);131 await pageA.execute_script(waitForPageShow);132 for (const src of params.scripts) {133 await pageA.execute_script((src) => {134 const script = document.createElement("script");135 script.src = src;136 document.head.append(script);137 return new Promise(resolve => script.onload = resolve);138 }, [src]);139 }140 await pageA.execute_script(params.funcBeforeNavigation);141 await navigateAndThenBack(pageA, pageB, urlB);142 if (params.shouldBeCached) {143 await assert_bfcached(pageA);144 } else {145 await assert_not_bfcached(pageA);146 }147 if (params.funcAfterAssertion) {148 await params.funcAfterAssertion(pageA, pageB);149 }150 }, description);...
otworz_strony.py
Source: otworz_strony.py
...1011driver = webdriver.Chrome(options=options)1213"""14driver.execute_script("Object.defineProperty(navigator, 'webdriver', {get: () => undefined})")15driver.execute_cdp_cmd('Network.setUserAgentOverride', {"userAgent": 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.53 Safari/537.36'})16print(driver.execute_script("return navigator.userAgent;"))17"""1819driver.get("https://phenotype.pl/")20driver.execute_script('''window.open("https://the100clth.pl/","_blank");''')21driver.execute_script('''window.open("https://animalswave.com/","_blank");''')22driver.execute_script('''window.open("https://relab.store/","_blank");''')23driver.execute_script('''window.open("https://hazel21.com/","_blank");''')24driver.execute_script('''window.open("https://zoology.pl/","_blank");''')25driver.execute_script('''window.open("https://premieresociety.com/pl/","_blank");''')26driver.execute_script('''window.open("https://hillswear.com/","_blank");''')27driver.execute_script('''window.open("https://www.snipes.pl/","_blank");''')28driver.execute_script('''window.open("https://www.alexanderbigwig.com/","_blank");''')29driver.execute_script('''window.open("https://inrablew.pl/pl/","_blank");''')30driver.execute_script('''window.open("https://mindstate.pl/pl/","_blank");''')31driver.execute_script('''window.open("https://zillamob.com/","_blank");''')32driver.execute_script('''window.open("https://majors.pl/","_blank");''')33driver.execute_script('''window.open("https://rareeverywhere.pl/","_blank");''')34driver.execute_script('''window.open("https://ideologyproject.com/store/","_blank");''')35driver.execute_script('''window.open("https://enragecustoms.pl/shop/","_blank");''')36driver.execute_script('''window.open("https://an-appendage.com/?v=9b7d173b068d&c=2a7c42566189","_blank");''')37driver.execute_script('''window.open("https://www.7more7.com/","_blank");''')38driver.execute_script('''window.open("https://velpa.pl/","_blank");''')39driver.execute_script('''window.open("https://debrande.pl/","_blank");''')40driver.execute_script('''window.open("https://www.gugushop.pl/","_blank");''')41driver.execute_script('''window.open("https://www.reserved.com/pl/pl/","_blank");''')42driver.execute_script('''window.open("https://www.zara.com/pl/","_blank");''')43driver.execute_script('''window.open("https://www.vangraaf.com/pl/","_blank");''')44driver.execute_script('''window.open("https://www.vitkac.com/pl","_blank");''')45driver.execute_script('''window.open("https://www.zalando-lounge.pl/event#","_blank");''')46driver.execute_script('''window.open("https://www.moliera2.com/","_blank");''')47driver.execute_script('''window.open("https://gomez.pl/pl/dla_niego","_blank");''')48driver.execute_script('''window.open("https://modivo.pl/m/mezczyzni.html","_blank");''')49driver.execute_script('''window.open("https://www.guess.eu/pl-pl/homepage","_blank");''')50driver.execute_script('''window.open("https://www.asos.com/pl/mezczyzni/","_blank");''')51driver.execute_script('''window.open("https://www.forpro.pl/","_blank");''')52driver.execute_script('''window.open("https://www.aboutyou.pl/","_blank");''')53driver.execute_script('''window.open("https://www.ataf.pl/pl/","_blank");''')54driver.execute_script('''window.open("https://www.nike.com/pl/","_blank");''')55driver.execute_script('''window.open("https://www.adidas.pl/","_blank");''')56driver.execute_script('''window.open("https://answear.com/c/on","_blank");''')57driver.execute_script('''window.open("https://www.peek-cloppenburg.pl/mezczyzni/","_blank");''')58driver.execute_script('''window.open("https://skstore.eu/pl","_blank");''')59driver.execute_script('''window.open("https://streetsupply.pl/","_blank");''')60driver.execute_script('''window.open("https://www.mandmdirect.pl/","_blank");''')61driver.execute_script('''window.open("https://worldbox.pl/","_blank");''')62driver.execute_script('''window.open("https://streetstyle24.pl/","_blank");''')63driver.execute_script('''window.open("https://eastendshop.com/pl/men-landing","_blank");''')64driver.execute_script('''window.open("https://runcolors.pl/","_blank");''')65driver.execute_script('''window.open("https://www.luisaviaroma.com/","_blank");''')66driver.execute_script('''window.open("https://warsawsneakerstore.com/","_blank");''')67driver.execute_script('''window.open("https://www.caliroots.com/pl","_blank");''')
...
test_execute_script.py
Source: test_execute_script.py
...5from errors import JavascriptException, MarionetteException6class TestExecuteContent(MarionetteTestCase):7 def test_stack_trace(self):8 try:9 self.marionette.execute_script("""10 let a = 1;11 return b;12 """)13 self.assertFalse(True)14 except JavascriptException, inst:15 self.assertTrue('return b' in inst.stacktrace)16 def test_execute_simple(self):17 self.assertEqual(1, self.marionette.execute_script("return 1;"))18 def test_check_window(self):19 self.assertTrue(self.marionette.execute_script("return (window !=null && window != undefined);"))20 def test_execute_no_return(self):21 self.assertEqual(self.marionette.execute_script("1;"), None)22 def test_execute_js_exception(self):23 self.assertRaises(JavascriptException,24 self.marionette.execute_script, "return foo(bar);")25 def test_execute_permission(self):26 self.assertRaises(JavascriptException,27 self.marionette.execute_script,28 """29let prefs = Components.classes["@mozilla.org/preferences-service;1"]30 .getService(Components.interfaces.nsIPrefBranch);31""")32 def test_complex_return_values(self):33 self.assertEqual(self.marionette.execute_script("return [1, 2];"), [1, 2])34 self.assertEqual(self.marionette.execute_script("return {'foo': 'bar', 'fizz': 'fazz'};"),35 {'foo': 'bar', 'fizz': 'fazz'})36 self.assertEqual(self.marionette.execute_script("return [1, {'foo': 'bar'}, 2];"),37 [1, {'foo': 'bar'}, 2])38 self.assertEqual(self.marionette.execute_script("return {'foo': [1, 'a', 2]};"),39 {'foo': [1, 'a', 2]})40 def test_sandbox_reuse(self):41 # Sandboxes between `execute_script()` invocations are shared.42 self.marionette.execute_script("this.foobar = [23, 42];")43 self.assertEqual(self.marionette.execute_script("return this.foobar;", new_sandbox=False), [23, 42])44 self.marionette.execute_script("global.barfoo = [42, 23];")45 self.assertEqual(self.marionette.execute_script("return global.barfoo;", new_sandbox=False), [42, 23])46 def test_that_we_can_pass_in_floats(self):47 expected_result = 1.248 result = self.marionette.execute_script("return arguments[0]",49 [expected_result])50 self.assertTrue(isinstance(result, float))51 self.assertEqual(result, expected_result)52class TestExecuteChrome(TestExecuteContent):53 def setUp(self):54 super(TestExecuteChrome, self).setUp()55 self.marionette.set_context("chrome")56 def test_execute_permission(self):57 self.assertEqual(1, self.marionette.execute_script("var c = Components.classes;return 1;"))58 def test_sandbox_reuse(self):...
setup.py
Source: setup.py
...11 f"\tuser='{user}',\n",12 f"\tpassword='{password}',\n",13 f"\tdatabase='univ_db'\n)"])14# https://stackoverflow.com/questions/745538/create-function-through-mysqldb15def execute_script(fname, db):16 delimiter = ';'17 statement = ""18 with open(fname, encoding='utf-8') as f:19 for line in f.readlines():20 line = line.strip()21 if line.startswith('delimiter'):22 delimiter = line[10:]23 else:24 statement += line + '\n'25 if line.endswith(delimiter):26 statement = statement.strip().strip(delimiter)27 with db.cursor() as cursor:28 try:29 cursor.execute(statement)30 db.commit()31 statement = ""32 except cursor.Error as e:33 print(f"{fname} - error applying ({str(e)})\nstatement:{statement}\nterminating...")34 sys.exit(1)35if __name__ == '__main__':36 print('enter connection parameters:')37 host = input('\thost (leave empty for default localhost): ') or 'localhost'38 port = input('\tport (leave empty for default 3307): ') or 330739 user = input('\tuser (leave empty for default root): ') or 'root'40 password = getpass.getpass(f'\tpassword for {user}: ')41 update_config(host, port, user, password)42 db = pymysql.connect(host=host, port=port, user=user, password=password)43 print('creating schema and tables...')44 tock = time.time()45 execute_script('./inserts/create_tables.sql', db)46 tick = time.time()47 print(f'\tdone in {(tick-tock):.3f} sec')48 db = pymysql.connect(host=host, port=port, user=user, password=password, database='univ_db')49 print('inserting data...')50 tock = time.time()51 execute_script('./inserts/faculties.sql', db)52 execute_script('./inserts/chairs.sql', db)53 execute_script('./inserts/teachers.sql', db)54 execute_script('./inserts/groups.sql', db)55 execute_script('./inserts/students.sql', db)56 execute_script('./inserts/subjects.sql', db)57 execute_script('./inserts/schedule.sql', db)58 execute_script('./inserts/mega_session.sql', db)59 tick = time.time()60 print(f'\tdone in {(tick-tock):.3f} sec')61 print('creating stored procedures...')62 tock = time.time()63 for i in range(1, 14):64 execute_script(f'./queries/task_{i}.sql', db)65 tick = time.time()66 print(f'\tdone in {(tick-tock):.3f} sec')...
Check out the latest blogs from LambdaTest on this topic:
Traditional software testers must step up if they want to remain relevant in the Agile environment. Agile will most probably continue to be the leading form of the software development process in the coming years.
Building a website is all about keeping the user experience in mind. Ultimately, it’s about providing visitors with a mind-blowing experience so they’ll keep coming back. One way to ensure visitors have a great time on your site is to add some eye-catching text or image animations.
So, now that the first installment of this two fold article has been published (hence you might have an idea of what Agile Testing is not in my opinion), I’ve started feeling the pressure to explain what Agile Testing actually means to me.
Even though several frameworks are available in the market for automation testing, Selenium is one of the most renowned open-source frameworks used by experts due to its numerous features and benefits.
When software developers took years to create and introduce new products to the market is long gone. Users (or consumers) today are more eager to use their favorite applications with the latest bells and whistles. However, users today don’t have the patience to work around bugs, errors, and design flaws. People have less self-control, and if your product or application doesn’t make life easier for users, they’ll leave for a better solution.
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.
You could also refer to video tutorials over LambdaTest YouTube channel to get step by step demonstration from industry experts.
Get 100 minutes of automation test minutes FREE!!