NodeJs-Cucumber-Selenium
Google Fonts
Our great sponsors
NodeJs-Cucumber-Selenium | Google Fonts | |
---|---|---|
99 | 491 | |
20 | 17,520 | |
- | 1.1% | |
0.0 | 9.9 | |
almost 2 years ago | 3 days ago | |
JavaScript | HTML | |
- | - |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
NodeJs-Cucumber-Selenium
-
A list of SaaS, PaaS and IaaS offerings that have free tiers of interest to devops and infradev
lambdatest.com — Manual, visual, screenshot, and automated browser testing on selenium and cypress, free for Open Source
-
Pyppeteer Tutorial: The Ultimate Guide to Using Puppeteer with Python
import asyncio import pytest from pyppeteer.errors import PageError from urllib.parse import quote import json import os import sys from os import environ from pyppeteer import connect, launch # Documentation Link # https://miyakogi.github.io/pyppeteer/reference.html#dialog-class # Interesting reference question # https://stackoverflow.com/questions/75622322/ # why-dialog-popup-alert-doesnt-dismiss-as-they-claim-by-using-pyppeteer-class # Scenario Handling Alerts dialog_test_url = 'https://www.lambdatest.com/selenium-playground/javascript-alert-box-demo' # Locators for different elements # 0 - JS Alert # 1 - Confirm Box # 2 - Prompt Box loc_alert_arr = ['.my-30', '.py-20.ml-10 .btn', 'section:nth-of-type(3) div:nth-of-type(3) .btn'] test_message = 'LambdaTest is a great platform!' # Event event listener for handling JS alert dialog box def handle_js_dialog_box(dialog): asyncio.ensure_future(dialog.accept()) print(f"Dialog message: {dialog.message}") # Event event listener for handling confirm dialog box def handle_confirm_accept_dialog_box(dialog): asyncio.ensure_future(dialog.accept()) print(f"Dialog message: {dialog.message}") # Event event listener for handling confirm dialog box def handle_confirm_dismiss_dialog_box(dialog): asyncio.ensure_future(dialog.dismiss()) print(f"Dialog message: {dialog.message}") # Event event listener for handling prompt dialog box def handle_confirm_prompt_dialog_box(dialog): asyncio.ensure_future(dialog.accept(test_message)) print(f"Dialog message: {dialog.message}") @pytest.mark.asyncio @pytest.mark.order(1) async def test_handling_js_alerts(page): await page.goto(dialog_test_url) # Can be changed with non-blocking sleep await asyncio.sleep(1) page.on('dialog', handle_js_dialog_box) elem_alert = await page.querySelector(loc_alert_arr[0]) # Click on the located element await elem_alert.click() # Wait for the event loop to process events await asyncio.sleep(2) @pytest.mark.asyncio @pytest.mark.order(2) async def test_handling_confirm_accept_alerts(page): await page.goto(dialog_test_url) # Can be changed with non-blocking sleep await asyncio.sleep(1) page.on('dialog', handle_confirm_accept_dialog_box) # Confirm Alert elem_alert = await page.querySelector(loc_alert_arr[1]) # Click on the located element await elem_alert.click() # Wait for the event loop to process events await asyncio.sleep(2) @pytest.mark.asyncio @pytest.mark.order(3) async def test_handling_confirm_dismiss_alerts(page): await page.goto(dialog_test_url) # Can be changed with non-blocking sleep await asyncio.sleep(1) page.on('dialog', handle_confirm_dismiss_dialog_box) await asyncio.sleep(2) # Dismiss Alert elem_alert = await page.querySelector(loc_alert_arr[1]) # Click on the located element await elem_alert.click() # Wait for the event loop to process events await asyncio.sleep(2) @pytest.mark.asyncio @pytest.mark.order(4) async def test_handling_prompt_alerts(page): await page.goto(dialog_test_url) # Can be changed with non-blocking sleep await asyncio.sleep(1) page.on('dialog', handle_confirm_prompt_dialog_box) await asyncio.sleep(1) # Prompt Alert elem_alert = await page.querySelector(loc_alert_arr[2]) # Click on the located element await elem_alert.click() page.on('dialog', handle_confirm_dismiss_dialog_box) await asyncio.sleep(2)
-
How To Use Playwright How To Use Playwright For Web Scraping with Python
import json import logging import os import subprocess import sys import time import urllib from logging import getLogger from dotenv import load_dotenv from playwright.sync_api import sync_playwright # setup basic logging for our project which will display the time, log level & log message logger = getLogger("webscapper.py") logging.basicConfig( stream=sys.stdout, # uncomment this line to redirect output to console format="%(message)s", level=logging.DEBUG, ) # LambdaTest username & access key are stored in an env file & we fetch it from there using python dotenv module load_dotenv("sample.env") capabilities = { "browserName": "Chrome", # Browsers allowed: `Chrome`, `MicrosoftEdge`, `pw-chromium`, `pw-firefox` and `pw-webkit` "browserVersion": "latest", "LT:Options": { "platform": "Windows 10", "build": "E Commerce Scrape Build", "name": "Scrape Lambda Software Product", "user": os.getenv("LT_USERNAME"), "accessKey": os.getenv("LT_ACCESS_KEY"), "network": False, "video": True, "console": True, "tunnel": False, # Add tunnel configuration if testing locally hosted webpage "tunnelName": "", # Optional "geoLocation": "", # country code can be fetched from https://www.lambdatest.com/capabilities-generator/ }, } def main(): with sync_playwright() as playwright: playwright_version = ( str(subprocess.getoutput("playwright --version")).strip().split(" ")[1] ) capabilities["LT:Options"]["playwrightClientVersion"] = playwright_version lt_cdp_url = ( "wss://cdp.lambdatest.com/playwright?capabilities=" + urllib.parse.quote(json.dumps(capabilities)) ) logger.info(f"Initiating connection to cloud playwright grid") browser = playwright.chromium.connect(lt_cdp_url) # comment above line & uncomment below line to test on local grid # browser = playwright.chromium.launch(headless=False) page = browser.new_page() try: # section to navigate to software category page.goto("https://ecommerce-playground.lambdatest.io/") page.get_by_role("button", name="Shop by Category").click() page.get_by_role("link", name="Software").click() page_to_be_scrapped = page.get_by_role( "combobox", name="Show:" ).select_option( "https://ecommerce-playground.lambdatest.io/index.php?route=product/category&path=17&limit=75" ) page.goto(page_to_be_scrapped[0]) # Since image are lazy-loaded scroll to bottom of page # the range is dynamically decided based on the number of items i.e. we take the range from limit # https://ecommerce-playground.lambdatest.io/index.php?route=product/category&path=17&limit=75 for i in range(int(page_to_be_scrapped[0].split("=")[-1])): page.mouse.wheel(0, 300) i += 1 time.sleep(0.1) # Construct locators to identify name, price & image base_product_row_locator = page.locator("#entry_212408").locator(".row").locator(".product-grid") product_name = base_product_row_locator.get_by_role("heading") product_price = base_product_row_locator.locator(".price-new") product_image = ( base_product_row_locator.locator(".carousel-inner") .locator(".active") .get_by_role("img") ) total_products = base_product_row_locator.count() for product in range(total_products): logger.info( f"\n**** PRODUCT {product+1} ****\n" f"Product Name = {product_name.nth(product).all_inner_texts()[0]}\n" f"Price = {product_price.nth(product).all_inner_texts()[0]}\n" f"Image = {product_image.nth(product).get_attribute('src')}\n" ) status = 'status' remark = 'Scraping Completed' page.evaluate("_ => {}","lambdatest_action: {\"action\": \"setTestStatus\", \"arguments\": {\"status\":\"" + status + "\", \"remark\": \"" + remark + "\"}}") except Exception as ex: logger.error(str(ex)) if __name__ == "__main__": main()
-
How to Use @FindBy Annotation in Selenium Java
public class SeleniumPlaygroundTests extends BaseTest { @Test public void testMenus() { this.driverManager.getDriver().get("https://www.lambdatest.com/selenium-playground/"); final var mainPage = new MainPage(this.driverManager.getDriver()); assertEquals(mainPage.menuListSize(), 37); }
-
Exception Handling In Cypress: A Comprehensive Guide
Tired of manually creating JSON data? Generate random JSON data in seconds with our easy-to-use tool. Try it now and make your development process a breeze: https://www.lambdatest.com/free-online-tools/random-json-generator
-
I made an app that plays different background sounds to help you focus and unwind. You can pick the sounds you like and adjust the volume to your preference.
There's online services that let you debug on safari. They got a lot of delay and are a headache to use but better than nothing. Lambdatest has a free trial. (After it expires you can just create a new account)
-
Selenium Standalone Server and Selenium Server [Differences]
package LambdaTest; import java.net.MalformedURLException; import java.net.URL; import java.util.HashMap; import org.openqa.selenium.By; import org.openqa.selenium.WebElement; import org.openqa.selenium.chrome.ChromeOptions; import org.openqa.selenium.firefox.FirefoxOptions; import org.openqa.selenium.remote.CapabilityType; import org.openqa.selenium.remote.DesiredCapabilities; import org.openqa.selenium.remote.RemoteWebDriver; import org.testng.annotations.AfterTest; import org.testng.annotations.BeforeTest; import org.testng.annotations.Test; public class TestCaseRunToCloudGrid { public RemoteWebDriver driver = null; public String username = "";//LambdaTest userName public String accesskey = "";//LambdaTest Accesskey public String gridURL = "@hub.lambdatest.com/wd/hub"; @BeforeTest public void setUp() throws Exception { DesiredCapabilities capabilities = new DesiredCapabilities(); capabilities.setCapability("browserName", "Chrome"); capabilities.setCapability("browserVersion", "97.0"); HashMap ltOptions = new HashMap(); ltOptions.put("user",username); ltOptions.put("accessKey",accesskey); ltOptions.put("build", "Selenium 4 grid Sample"); ltOptions.put("name", "Selenium 4 grid Sample"); ltOptions.put("platformName", "Windows 11"); ltOptions.put("selenium_version","4.0.0"); capabilities.setCapability("LT:Options", ltOptions); try { driver = new RemoteWebDriver(new URL("https://" + username + ":" + accesskey + gridURL),capabilities); } catch (MalformedURLException e) { System.out.println("Invalid grid URL"); } catch (Exception e) { System.out.println(e.getMessage()); } } @Test public void firstTestCase() { try { System.out.println("Logging into Lambda Test Selenium PlayGround page "); driver.get("https://www.lambdatest.com/selenium-playground/simple-form-demo"); WebElement messageTextBox = driver.findElement(By.cssSelector("input#user-message")); messageTextBox.sendKeys("Welcome to cloud grid"); WebElement getValueButton = driver.findElement(By.cssSelector("#showInput")); getValueButton.click(); System.out.println("Clicked on the Get Checked Value button"); } catch (Exception e) { } } @AfterTest public void closeBrowser() { driver.close(); System.out.println("The driver has been closed."); } }
-
How To Automate iOS App Using Appium
import io.appium.java_client.AppiumDriver; import io.appium.java_client.MobileBy; import io.appium.java_client.MobileElement; import io.appium.java_client.ios.IOSDriver; import org.openqa.selenium.remote.DesiredCapabilities; import org.openqa.selenium.support.ui.ExpectedConditions; import org.openqa.selenium.support.ui.WebDriverWait; import java.net.URL; public class vanilla_ios { public static String userName = System.getenv("LT_USERNAME") == null ? "sidharth****" //Add username here : System.getenv("LT_USERNAME"); public static String accessKey = System.getenv("LT_ACCESS_KEY") == null ? "********" //Add accessKey here : System.getenv("LT_ACCESS_KEY"); public static final String URL = "https://" + userName + ":" + accessKey + "@beta-hub.lambdatest.com/wd/hub"; public static IOSDriver driver = null; public static void main(String[] args) throws Exception { try { DesiredCapabilities caps = new DesiredCapabilities(); caps.setCapability("platformVersion", "15"); caps.setCapability("deviceName", "iPhone 12"); caps.setCapability("isRealMobile", true); caps.setCapability("app", "******"); //Enter your app url caps.setCapability("platformName", "iOS"); caps.setCapability("build", "Java Vanilla - iOS"); caps.setCapability("name", "Sample Test Java"); caps.setCapability("devicelog", true); caps.setCapability("network", true); driver = new IOSDriver(new URL("https://" + userName + ":" + accessKey + "@beta-hub.lambdatest.com/wd/hub"), caps); Thread.sleep(2000); //Opens the browser MobileElement browser = (MobileElement) driver.findElementByAccessibilityId("Browser"); browser.click(); Thread.sleep(3000); WebDriverWait el7 = new WebDriverWait(driver, 30); el7.until(ExpectedConditions.elementToBeClickable(MobileBy.id("url"))); driver.findElementById("url").sendKeys("https://www.lambdatest.com/"); //Clicks on the text box WebDriverWait el = new WebDriverWait(driver,90); MobileElement el4 = (MobileElement) driver.findElementByAccessibilityId("find"); el.until(ExpectedConditions.elementToBeClickable(el4)); el4.click(); el4.sendKeys("Lambdatest"); //((JavascriptExecutor) driver).executeScript("lambda-status=passed"); driver.quit(); } catch (Exception t) { System.out.println(t); driver.quit(); } } }
-
How To Perform Web Scraping With JavaScript And Selenium
Check this out: Online Safari Browser Testing For Windows - Say No To Safari VM! Perform Cross Browser Compatibility Testing On All Safari Browser Versions Across Real Browsers And Operating Systems. https://www.lambdatest.com/safari-browser-for-windows
-
free-for.dev
lambdatest.com — Manual, visual, screenshot and automated browser testing on selenium and cypress, free for Open Source
Google Fonts
-
React website sample for portfolio
I first checking out any good fonts on Google font that fits the theme of the website. I select the Nunito as I could feel the playful vibe behind it.
-
An Afternoon with SVGs | Frontend Challenge Entry
Next I spruced up my form's visuals a bit by heading to Google Fonts and finding one that had camping vibes - eventually landing on Amatic SC. Then I had the wild idea of making the form look like a piece of paper, so that I could make the submit button fold the paper up into an envelope or paper airplane and fly off screen if it was submitted successfully (This was EXTREMELY high hopes and I didn't even get around to trying to start this animation in the time I allotted myself 😂). I started by trying to find a crumpled paper look on sites like Hero Patterns, but eventually found myself on this codepen:
-
Button Component with RiotJS (Material Design)
BeerCSS supports Material Fonts by default, here is the list of all icons: https://fonts.google.com/
-
Free Resources Every Web Developer Should Know About
Google Fonts (https://fonts.google.com/)
-
100+ FREE Resources Every Web Developer Must Try
Google Fonts
- Variable Fonts
-
19 Handy Websites for Web Developers
While many online font platforms require payment for commercial use, Google Fonts stands out. It offers a massive collection of fonts that are completely free and open-source, meaning anyone can use them in both personal and commercial projects without any cost.
-
Complete React and Tailwind CSS Website Design Tutorial | Build an Educational Landing Page
Links to external resources like Tailwind CSS, Google Fonts, and React Icons are provided, offering additional references for users.
-
Reddit Sans
There is some work to do still[1], but a variable version will probably be available once the fonts are released on the Google Fonts service.
-
A Guide to Enhancing QA
Fonts
What are some alternatives?
inter - The Inter font family
source-code-pro - Monospaced font family for user interface and coding environments
fontsource - Self-host Open Source fonts in neatly bundled NPM packages.
JetBrainsMono - JetBrains Mono – the free and open-source typeface for developers
PrusaSlicer - G-code generator for 3D printers (RepRap, Makerbot, Ultimaker etc.)
Font-Awesome - The iconic SVG, font, and CSS toolkit
og-image - Open Graph Image as a Service - generate cards for Twitter, Facebook, Slack, etc
penpot - Penpot: The open-source design tool for design and code collaboration
spaceship-prompt - :rocket::star: Minimalistic, powerful and extremely customizable Zsh prompt
go-unsplash - Go Client for the Unsplash API
feather - Simply beautiful open-source icons
nerd-fonts - Iconic font aggregator, collection, & patcher. 3,600+ icons, 50+ patched fonts: Hack, Source Code Pro, more. Glyph collections: Font Awesome, Material Design Icons, Octicons, & more