├── .gitignore ├── 01-init ├── pom.xml └── src │ └── test │ └── java │ └── .gitkeep ├── 02-your-first-test ├── pom.xml └── src │ └── test │ └── java │ └── tests │ └── TestLogin.java ├── 03-your-first-test-assertion ├── pom.xml └── src │ └── test │ └── java │ └── tests │ └── TestLogin.java ├── 04-page-objects ├── pom.xml └── src │ └── test │ └── java │ ├── pageobjects │ └── Login.java │ └── tests │ └── TestLogin.java ├── 05-base-page-object ├── pom.xml └── src │ └── test │ └── java │ ├── pageobjects │ ├── Base.java │ └── Login.java │ └── tests │ └── TestLogin.java ├── 06-explicit-waits ├── pom.xml └── src │ └── test │ └── java │ ├── pageobjects │ ├── Base.java │ ├── DynamicLoading.java │ └── Login.java │ └── tests │ ├── TestDynamicLoading.java │ └── TestLogin.java ├── 07-framework ├── pom.xml ├── src │ └── test │ │ └── java │ │ ├── pageobjects │ │ ├── Base.java │ │ ├── DynamicLoading.java │ │ └── Login.java │ │ └── tests │ │ ├── Base.java │ │ ├── Config.java │ │ ├── TestDynamicLoading.java │ │ ├── TestLogin.java │ │ └── groups │ │ ├── All.java │ │ ├── Deep.java │ │ └── Shallow.java └── vendor │ ├── chromedriver_mac32 │ ├── chromedriver_win32.exe │ └── sauce-connect │ ├── bin │ ├── sc │ └── sc.dSYM │ │ └── Contents │ │ ├── Info.plist │ │ └── Resources │ │ └── DWARF │ │ └── sc │ ├── include │ └── sauceconnect.h │ ├── lib │ ├── libsauceconnect.a │ └── libsauceconnect.la │ └── license.html ├── README.md └── lib ├── cglib └── cglib-nodep │ ├── 3.2.4 │ └── cglib-nodep-3.2.4.jar │ └── maven-metadata-local.xml ├── com ├── codeborne │ └── phantomjsdriver │ │ ├── 1.4.0 │ │ └── phantomjsdriver-1.4.0.jar │ │ └── maven-metadata-local.xml ├── google │ ├── code │ │ └── gson │ │ │ └── gson │ │ │ ├── 2.8.0 │ │ │ └── gson-2.8.0.jar │ │ │ └── maven-metadata-local.xml │ └── guava │ │ └── guava │ │ ├── 21.0 │ │ └── guava-21.0.jar │ │ └── maven-metadata-local.xml ├── googlecode │ └── json-simple │ │ └── json-simple │ │ ├── 1.1.1 │ │ └── json-simple-1.1.1.jar │ │ └── maven-metadata-local.xml └── saucelabs │ └── saucerest │ ├── 1.0.35 │ └── saucerest-1.0.35.jar │ └── maven-metadata-local.xml ├── commons-codec └── commons-codec │ ├── 1.9 │ └── commons-codec-1.9.jar │ └── maven-metadata-local.xml ├── commons-io └── commons-io │ ├── 2.5 │ └── commons-io-2.5.jar │ └── maven-metadata-local.xml ├── commons-logging └── commons-logging │ ├── 1.2 │ └── commons-logging-1.2.jar │ └── maven-metadata-local.xml ├── junit └── junit │ ├── 4.12 │ └── junit-4.12.jar │ └── maven-metadata-local.xml ├── net ├── java │ └── dev │ │ └── jna │ │ ├── jna-platform │ │ ├── 4.1.0 │ │ │ └── jna-platform-4.1.0.jar │ │ └── maven-metadata-local.xml │ │ └── jna │ │ ├── 4.1.0 │ │ └── jna-4.1.0.jar │ │ └── maven-metadata-local.xml └── sourceforge │ ├── cssparser │ └── cssparser │ │ ├── 0.9.21 │ │ └── cssparser-0.9.21.jar │ │ └── maven-metadata-local.xml │ └── htmlunit │ ├── htmlunit-core-js │ ├── 2.23 │ │ └── htmlunit-core-js-2.23.jar │ └── maven-metadata-local.xml │ ├── htmlunit │ ├── 2.24 │ │ └── htmlunit-2.24.jar │ └── maven-metadata-local.xml │ └── neko-htmlunit │ ├── 2.24 │ └── neko-htmlunit-2.24.jar │ └── maven-metadata-local.xml ├── org ├── apache │ ├── commons │ │ ├── commons-exec │ │ │ ├── 1.3 │ │ │ │ └── commons-exec-1.3.jar │ │ │ └── maven-metadata-local.xml │ │ └── commons-lang3 │ │ │ ├── 3.5 │ │ │ └── commons-lang3-3.5.jar │ │ │ └── maven-metadata-local.xml │ └── httpcomponents │ │ ├── httpclient │ │ ├── 4.5 │ │ │ └── httpclient-4.5.jar │ │ └── maven-metadata-local.xml │ │ ├── httpcore │ │ ├── 4.4.1 │ │ │ └── httpcore-4.4.1.jar │ │ └── maven-metadata-local.xml │ │ └── httpmime │ │ ├── 4.5.2 │ │ └── httpmime-4.5.2.jar │ │ └── maven-metadata-local.xml ├── eclipse │ └── jetty │ │ ├── jetty-io │ │ ├── 9.2.20.v20161216 │ │ │ └── jetty-io-9.2.20.v20161216.jar │ │ └── maven-metadata-local.xml │ │ ├── jetty-util │ │ ├── 9.2.20.v20161216 │ │ │ └── jetty-util-9.2.20.v20161216.jar │ │ └── maven-metadata-local.xml │ │ └── websocket │ │ ├── websocket-api │ │ ├── 9.2.20.v20161216 │ │ │ └── websocket-api-9.2.20.v20161216.jar │ │ └── maven-metadata-local.xml │ │ ├── websocket-client │ │ ├── 9.2.20.v20161216 │ │ │ └── websocket-client-9.2.20.v20161216.jar │ │ └── maven-metadata-local.xml │ │ └── websocket-common │ │ ├── 9.2.20.v20161216 │ │ └── websocket-common-9.2.20.v20161216.jar │ │ └── maven-metadata-local.xml ├── hamcrest │ ├── hamcrest-core │ │ ├── 1.3 │ │ │ └── hamcrest-core-1.3.jar │ │ └── maven-metadata-local.xml │ └── hamcrest-library │ │ ├── 1.3 │ │ └── hamcrest-library-1.3.jar │ │ └── maven-metadata-local.xml ├── json │ └── json │ │ ├── 20090211 │ │ └── json-20090211.jar │ │ └── maven-metadata-local.xml ├── seleniumhq │ └── selenium │ │ ├── htmlunit-driver │ │ ├── 2.24 │ │ │ └── htmlunit-driver-2.24.jar │ │ └── maven-metadata-local.xml │ │ ├── selenium-api │ │ ├── 3.3.1 │ │ │ └── selenium-api-3.3.1.jar │ │ └── maven-metadata-local.xml │ │ ├── selenium-chrome-driver │ │ ├── 3.3.1 │ │ │ └── selenium-chrome-driver-3.3.1.jar │ │ └── maven-metadata-local.xml │ │ ├── selenium-edge-driver │ │ ├── 3.3.1 │ │ │ └── selenium-edge-driver-3.3.1.jar │ │ └── maven-metadata-local.xml │ │ ├── selenium-firefox-driver │ │ ├── 3.3.1 │ │ │ └── selenium-firefox-driver-3.3.1.jar │ │ └── maven-metadata-local.xml │ │ ├── selenium-ie-driver │ │ ├── 3.3.1 │ │ │ └── selenium-ie-driver-3.3.1.jar │ │ └── maven-metadata-local.xml │ │ ├── selenium-java │ │ ├── 3.3.1 │ │ │ └── selenium-java-3.3.1.jar │ │ └── maven-metadata-local.xml │ │ ├── selenium-opera-driver │ │ ├── 3.3.1 │ │ │ └── selenium-opera-driver-3.3.1.jar │ │ └── maven-metadata-local.xml │ │ ├── selenium-remote-driver │ │ ├── 3.3.1 │ │ │ └── selenium-remote-driver-3.3.1.jar │ │ └── maven-metadata-local.xml │ │ ├── selenium-safari-driver │ │ ├── 3.3.1 │ │ │ └── selenium-safari-driver-3.3.1.jar │ │ └── maven-metadata-local.xml │ │ └── selenium-support │ │ ├── 3.3.1 │ │ └── selenium-support-3.3.1.jar │ │ └── maven-metadata-local.xml └── w3c │ └── css │ └── sac │ ├── 1.3 │ └── sac-1.3.jar │ └── maven-metadata-local.xml ├── xalan ├── serializer │ ├── 2.7.2 │ │ └── serializer-2.7.2.jar │ └── maven-metadata-local.xml └── xalan │ ├── 2.7.2 │ └── xalan-2.7.2.jar │ └── maven-metadata-local.xml ├── xerces └── xercesImpl │ ├── 2.11.0 │ └── xercesImpl-2.11.0.jar │ └── maven-metadata-local.xml └── xml-apis └── xml-apis ├── 1.4.01 └── xml-apis-1.4.01.jar └── maven-metadata-local.xml /.gitignore: -------------------------------------------------------------------------------- 1 | # Mac 2 | .DS_Store 3 | 4 | # IntelliJ 5 | .idea/ 6 | *.iml 7 | *.iws 8 | 9 | # Maven 10 | log/ 11 | target/ 12 | 13 | # Selenium 14 | *.log 15 | 16 | # Other 17 | output/ 18 | *.zip 19 | -------------------------------------------------------------------------------- /01-init/pom.xml: -------------------------------------------------------------------------------- 1 | 3 | 4.0.0 4 | com.seleniumguidebook.examples 5 | seleniumguidebook-examples 6 | jar 7 | 1.0-SNAPSHOT 8 | seleniumguidebook-examples 9 | http://maven.apache.org 10 | 11 | 12 | 13 | 14 | junit 15 | junit 16 | 4.12 17 | test 18 | 19 | 20 | 21 | org.seleniumhq.selenium 22 | selenium-java 23 | 3.3.1 24 | 25 | 26 | 27 | 28 | 29 | lib 30 | lib 31 | 32 | true 33 | ignore 34 | 35 | 36 | false 37 | 38 | file://${project.basedir}\..\lib 39 | 40 | 41 | 42 | 43 | 44 | -------------------------------------------------------------------------------- /01-init/src/test/java/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/saucelabs-training/selenium-workshop-code-examples/7ca5e23b4ebfc6c7b25f476bc06cc5023797d254/01-init/src/test/java/.gitkeep -------------------------------------------------------------------------------- /02-your-first-test/pom.xml: -------------------------------------------------------------------------------- 1 | 3 | 4.0.0 4 | com.seleniumguidebook.examples 5 | seleniumguidebook-example-02 6 | jar 7 | 1.0-SNAPSHOT 8 | seleniumguidebook-example-02 9 | http://maven.apache.org 10 | 11 | 12 | 13 | 14 | junit 15 | junit 16 | 4.12 17 | test 18 | 19 | 20 | 21 | org.seleniumhq.selenium 22 | selenium-java 23 | 3.3.1 24 | 25 | 26 | 27 | 28 | 29 | lib 30 | lib 31 | 32 | true 33 | ignore 34 | 35 | 36 | false 37 | 38 | file://${project.basedir}\..\lib 39 | 40 | 41 | 42 | 43 | 44 | -------------------------------------------------------------------------------- /02-your-first-test/src/test/java/tests/TestLogin.java: -------------------------------------------------------------------------------- 1 | package tests; 2 | 3 | import org.junit.After; 4 | import org.junit.Before; 5 | import org.junit.Test; 6 | import org.openqa.selenium.By; 7 | import org.openqa.selenium.WebDriver; 8 | import org.openqa.selenium.chrome.ChromeDriver; 9 | 10 | public class TestLogin { 11 | 12 | private WebDriver driver; 13 | 14 | @Before 15 | public void setUp() { 16 | 17 | // Windows 18 | //System.setProperty("webdriver.chrome.driver", "C:\\tools\\selenium\\chromedriver.exe"); 19 | // Mac 20 | //System.setProperty("webdriver.chrome.driver", "/usr/local/bin/chromedriver"); 21 | 22 | driver = new ChromeDriver(); 23 | } 24 | 25 | @Test 26 | public void succeeded() { 27 | driver.get("http://the-internet.herokuapp.com/login"); 28 | driver.findElement(By.id("username")).sendKeys("tomsmith"); 29 | driver.findElement(By.id("password")).sendKeys("SuperSecretPassword!"); 30 | driver.findElement(By.cssSelector("button")).click(); 31 | } 32 | 33 | @After 34 | public void tearDown() { 35 | driver.quit(); 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /03-your-first-test-assertion/pom.xml: -------------------------------------------------------------------------------- 1 | 3 | 4.0.0 4 | com.seleniumguidebook.examples 5 | seleniumguidebook-example-03 6 | jar 7 | 1.0-SNAPSHOT 8 | seleniumguidebook-example-03 9 | http://maven.apache.org 10 | 11 | 12 | 13 | 14 | junit 15 | junit 16 | 4.12 17 | test 18 | 19 | 20 | 21 | org.seleniumhq.selenium 22 | selenium-java 23 | 3.3.1 24 | 25 | 26 | 27 | 28 | 29 | lib 30 | lib 31 | 32 | true 33 | ignore 34 | 35 | 36 | false 37 | 38 | file://${project.basedir}\..\lib 39 | 40 | 41 | 42 | 43 | 44 | -------------------------------------------------------------------------------- /03-your-first-test-assertion/src/test/java/tests/TestLogin.java: -------------------------------------------------------------------------------- 1 | package tests; 2 | 3 | import org.junit.After; 4 | import org.junit.Before; 5 | import org.junit.Test; 6 | import org.openqa.selenium.By; 7 | import org.openqa.selenium.WebDriver; 8 | import org.openqa.selenium.chrome.ChromeDriver; 9 | 10 | import static org.junit.Assert.assertTrue; 11 | 12 | public class TestLogin { 13 | 14 | private WebDriver driver; 15 | 16 | @Before 17 | public void setUp() { 18 | // Windows 19 | //System.setProperty("webdriver.chrome.driver", "C:\\tools\\selenium\\chromedriver.exe"); 20 | // Mac 21 | //System.setProperty("webdriver.chrome.driver", "/usr/local/bin/chromedriver"); 22 | 23 | driver = new ChromeDriver(); 24 | } 25 | 26 | @Test 27 | public void succeeded() { 28 | driver.get("http://the-internet.herokuapp.com/login"); 29 | driver.findElement(By.id("username")).sendKeys("tomsmith"); 30 | driver.findElement(By.id("password")).sendKeys("SuperSecretPassword!"); 31 | driver.findElement(By.cssSelector("button")).click(); 32 | 33 | assertTrue("success message not present", 34 | driver.findElement(By.cssSelector(".flash.success")).isDisplayed()); 35 | //assertTrue("success message not present", 36 | // driver.findElement(By.cssSelector(".flash.successasdf")).isDisplayed()); 37 | } 38 | 39 | @After 40 | public void tearDown() { 41 | driver.quit(); 42 | } 43 | } 44 | -------------------------------------------------------------------------------- /04-page-objects/pom.xml: -------------------------------------------------------------------------------- 1 | 3 | 4.0.0 4 | com.seleniumguidebook.examples 5 | seleniumguidebook-example-04 6 | jar 7 | 1.0-SNAPSHOT 8 | seleniumguidebook-example-04 9 | http://maven.apache.org 10 | 11 | 12 | 13 | 14 | junit 15 | junit 16 | 4.12 17 | test 18 | 19 | 20 | 21 | org.seleniumhq.selenium 22 | selenium-java 23 | 3.3.1 24 | 25 | 26 | 27 | 28 | lib 29 | lib 30 | 31 | true 32 | ignore 33 | 34 | 35 | false 36 | 37 | file://${project.basedir}\..\lib 38 | 39 | 40 | 41 | 42 | 43 | -------------------------------------------------------------------------------- /04-page-objects/src/test/java/pageobjects/Login.java: -------------------------------------------------------------------------------- 1 | package pageobjects; 2 | 3 | import org.openqa.selenium.By; 4 | import org.openqa.selenium.WebDriver; 5 | import org.openqa.selenium.support.ui.ExpectedConditions; 6 | import org.openqa.selenium.support.ui.WebDriverWait; 7 | 8 | import static org.junit.Assert.assertTrue; 9 | 10 | public class Login { 11 | 12 | private WebDriver driver; 13 | By loginFormLocator = By.id("login"); 14 | By usernameLocator = By.id("username"); 15 | By passwordLocator = By.id("password"); 16 | By submitButton = By.cssSelector("button"); 17 | By successMessageLocator = By.cssSelector(".flash.success"); 18 | By failureMessageLocator = By.cssSelector(".flash.error"); 19 | 20 | public Login(WebDriver driver) { 21 | this.driver = driver; 22 | driver.get("http://the-internet.herokuapp.com/login"); 23 | assertTrue("The login form is not present", 24 | driver.findElement(loginFormLocator).isDisplayed()); 25 | } 26 | 27 | public void with(String username, String password) { 28 | driver.findElement(usernameLocator).sendKeys(username); 29 | driver.findElement(passwordLocator).sendKeys(password); 30 | driver.findElement(submitButton).click(); 31 | } 32 | 33 | public Boolean successMessagePresent() { 34 | //wait(successMessageLocator); 35 | return driver.findElement(successMessageLocator).isDisplayed(); 36 | } 37 | 38 | public Boolean failureMessagePresent() { 39 | return driver.findElement(failureMessageLocator).isDisplayed(); 40 | } 41 | 42 | public void wait(By locator){ 43 | WebDriverWait wait = new WebDriverWait(driver, 5); 44 | wait.until(ExpectedConditions.visibilityOfElementLocated(locator)); 45 | // return element; 46 | } 47 | 48 | } -------------------------------------------------------------------------------- /04-page-objects/src/test/java/tests/TestLogin.java: -------------------------------------------------------------------------------- 1 | package tests; 2 | 3 | import org.junit.After; 4 | import org.junit.Before; 5 | import org.junit.Test; 6 | import org.openqa.selenium.WebDriver; 7 | import org.openqa.selenium.chrome.ChromeDriver; 8 | import pageobjects.Login; 9 | 10 | import static org.junit.Assert.assertTrue; 11 | 12 | public class TestLogin { 13 | 14 | private WebDriver driver; 15 | private Login login; 16 | 17 | @Before 18 | public void setUp() { 19 | driver = (WebDriver) new ChromeDriver(); 20 | login = new Login(driver); 21 | } 22 | 23 | @Test 24 | public void succeeded() { 25 | login.with("tomsmith", "SuperSecretPassword!"); 26 | assertTrue("success message not present", 27 | login.successMessagePresent()); 28 | } 29 | 30 | @Test 31 | public void failed() { 32 | login.with("tomsmith", "bad password"); 33 | assertTrue("failure message wasn't present after providing bogus credentials", 34 | login.failureMessagePresent()); 35 | //assertFalse("success message was present after providing bogus credentials", 36 | // login.successMessagePresent()); 37 | } 38 | 39 | @After 40 | public void tearDown() { 41 | driver.quit(); 42 | } 43 | } 44 | -------------------------------------------------------------------------------- /05-base-page-object/pom.xml: -------------------------------------------------------------------------------- 1 | 3 | 4.0.0 4 | com.seleniumguidebook.examples 5 | seleniumguidebook-example-05 6 | jar 7 | 1.0-SNAPSHOT 8 | seleniumguidebook-example-05 9 | http://maven.apache.org 10 | 11 | 12 | 13 | 14 | junit 15 | junit 16 | 4.12 17 | test 18 | 19 | 20 | 21 | org.seleniumhq.selenium 22 | selenium-java 23 | 3.3.1 24 | 25 | 26 | 27 | 28 | 29 | lib 30 | lib 31 | 32 | true 33 | ignore 34 | 35 | 36 | false 37 | 38 | file://${project.basedir}\..\lib 39 | 40 | 41 | 42 | 43 | 44 | -------------------------------------------------------------------------------- /05-base-page-object/src/test/java/pageobjects/Base.java: -------------------------------------------------------------------------------- 1 | package pageobjects; 2 | 3 | import org.openqa.selenium.By; 4 | import org.openqa.selenium.WebDriver; 5 | import org.openqa.selenium.WebElement; 6 | 7 | public class Base { 8 | 9 | private WebDriver driver; 10 | 11 | public Base(WebDriver driver) { 12 | this.driver = driver; 13 | } 14 | 15 | public void visit(String url) { 16 | driver.get(url); 17 | } 18 | 19 | public WebElement find(By locator) { 20 | return driver.findElement(locator); 21 | } 22 | 23 | public void click(By locator) { 24 | find(locator).click(); 25 | } 26 | 27 | public void type(String inputText, By locator) { 28 | find(locator).sendKeys(inputText); 29 | } 30 | 31 | public Boolean isDisplayed(By locator) { 32 | try { 33 | return find(locator).isDisplayed(); 34 | } catch (org.openqa.selenium.NoSuchElementException exception) { 35 | return false; 36 | } 37 | } 38 | 39 | } -------------------------------------------------------------------------------- /05-base-page-object/src/test/java/pageobjects/Login.java: -------------------------------------------------------------------------------- 1 | package pageobjects; 2 | 3 | import org.openqa.selenium.By; 4 | import org.openqa.selenium.WebDriver; 5 | import static org.junit.Assert.assertTrue; 6 | 7 | public class Login extends Base { 8 | 9 | By loginFormLocator = By.id("login"); 10 | By usernameLocator = By.id("username"); 11 | By passwordLocator = By.id("password"); 12 | By submitButton = By.cssSelector("button"); 13 | By successMessageLocator = By.cssSelector(".flash.success"); 14 | By failureMessageLocator = By.cssSelector(".flash.error"); 15 | 16 | public Login(WebDriver driver) { 17 | super(driver); 18 | visit("http://the-internet.herokuapp.com/login"); 19 | assertTrue("The login form is not present", 20 | isDisplayed(loginFormLocator)); 21 | } 22 | 23 | public void with(String username, String password) { 24 | type(username, usernameLocator); 25 | type(password, passwordLocator); 26 | click(submitButton); 27 | } 28 | 29 | public Boolean successMessagePresent() { 30 | return isDisplayed(successMessageLocator); 31 | } 32 | 33 | public Boolean failureMessagePresent() { 34 | return isDisplayed(failureMessageLocator); 35 | } 36 | } -------------------------------------------------------------------------------- /05-base-page-object/src/test/java/tests/TestLogin.java: -------------------------------------------------------------------------------- 1 | package tests; 2 | 3 | import org.junit.After; 4 | import org.junit.Before; 5 | import org.junit.Test; 6 | import org.openqa.selenium.WebDriver; 7 | import org.openqa.selenium.chrome.ChromeDriver; 8 | import pageobjects.Login; 9 | 10 | import static org.junit.Assert.assertFalse; 11 | import static org.junit.Assert.assertTrue; 12 | 13 | public class TestLogin { 14 | 15 | private WebDriver driver; 16 | private Login login; 17 | 18 | @Before 19 | public void setUp() { 20 | driver = new ChromeDriver(); 21 | login = new Login(driver); 22 | } 23 | 24 | @Test 25 | public void succeeded() { 26 | login.with("tomsmith", "SuperSecretPassword!"); 27 | assertTrue("success message not present", 28 | login.successMessagePresent()); 29 | } 30 | 31 | @Test 32 | public void failed() { 33 | login.with("tomsmith", "bad password"); 34 | assertTrue("failure message wasn't present after providing bogus credentials", 35 | login.failureMessagePresent()); 36 | assertFalse("success message was present after providing bogus credentials", 37 | login.successMessagePresent()); 38 | } 39 | 40 | @After 41 | public void tearDown() { 42 | driver.quit(); 43 | } 44 | } 45 | -------------------------------------------------------------------------------- /06-explicit-waits/pom.xml: -------------------------------------------------------------------------------- 1 | 3 | 4.0.0 4 | com.seleniumguidebook.examples 5 | seleniumguidebook-example-06 6 | jar 7 | 1.0-SNAPSHOT 8 | seleniumguidebook-example-06 9 | http://maven.apache.org 10 | 11 | 12 | 13 | 14 | junit 15 | junit 16 | 4.12 17 | test 18 | 19 | 20 | 21 | org.seleniumhq.selenium 22 | selenium-java 23 | 3.3.1 24 | 25 | 26 | 27 | 28 | 29 | lib 30 | lib 31 | 32 | true 33 | ignore 34 | 35 | 36 | false 37 | 38 | file://${project.basedir}\..\lib 39 | 40 | 41 | 42 | 43 | 44 | -------------------------------------------------------------------------------- /06-explicit-waits/src/test/java/pageobjects/Base.java: -------------------------------------------------------------------------------- 1 | package pageobjects; 2 | 3 | import org.openqa.selenium.By; 4 | import org.openqa.selenium.WebDriver; 5 | import org.openqa.selenium.WebElement; 6 | import org.openqa.selenium.support.ui.ExpectedConditions; 7 | import org.openqa.selenium.support.ui.WebDriverWait; 8 | 9 | public class Base { 10 | 11 | private WebDriver driver; 12 | 13 | public Base(WebDriver driver) { 14 | this.driver = driver; 15 | } 16 | 17 | public void visit(String url) { 18 | driver.get(url); 19 | } 20 | 21 | public WebElement find(By locator) { 22 | return driver.findElement(locator); 23 | } 24 | 25 | public void click(By locator) { 26 | find(locator).click(); 27 | } 28 | 29 | public void type(String inputText, By locator) { 30 | find(locator).sendKeys(inputText); 31 | } 32 | 33 | public Boolean isDisplayed(By locator) { 34 | try { 35 | return find(locator).isDisplayed(); 36 | } catch (org.openqa.selenium.NoSuchElementException exception) { 37 | return false; 38 | } 39 | } 40 | 41 | public Boolean isDisplayed(By locator, Integer timeout) { 42 | try { 43 | WebDriverWait wait = new WebDriverWait(driver, timeout); 44 | wait.until(ExpectedConditions.visibilityOfElementLocated(locator)); 45 | } catch (org.openqa.selenium.TimeoutException exception) { 46 | return false; 47 | } 48 | return true; 49 | } 50 | } 51 | -------------------------------------------------------------------------------- /06-explicit-waits/src/test/java/pageobjects/DynamicLoading.java: -------------------------------------------------------------------------------- 1 | package pageobjects; 2 | 3 | import org.openqa.selenium.By; 4 | import org.openqa.selenium.WebDriver; 5 | 6 | public class DynamicLoading extends Base { 7 | 8 | By startButton = By.cssSelector("#start button"); 9 | By finishText = By.id("finish"); 10 | 11 | public DynamicLoading(WebDriver driver) { 12 | super(driver); 13 | } 14 | 15 | public void loadExample(String exampleNumber) { 16 | visit("http://the-internet.herokuapp.com/dynamic_loading/" + exampleNumber); 17 | click(startButton); 18 | } 19 | 20 | public Boolean finishTextPresent() { 21 | return isDisplayed(finishText, 10); 22 | } 23 | 24 | } -------------------------------------------------------------------------------- /06-explicit-waits/src/test/java/pageobjects/Login.java: -------------------------------------------------------------------------------- 1 | package pageobjects; 2 | 3 | import org.openqa.selenium.By; 4 | import org.openqa.selenium.WebDriver; 5 | import static org.junit.Assert.assertTrue; 6 | 7 | public class Login extends Base { 8 | 9 | By loginFormLocator = By.id("login"); 10 | By usernameLocator = By.id("username"); 11 | By passwordLocator = By.id("password"); 12 | By submitButton = By.cssSelector("button"); 13 | By successMessageLocator = By.cssSelector(".flash.success"); 14 | By failureMessageLocator = By.cssSelector(".flash.error"); 15 | 16 | public Login(WebDriver driver) { 17 | super(driver); 18 | visit("http://the-internet.herokuapp.com/login"); 19 | assertTrue("The login form is not present", 20 | isDisplayed(loginFormLocator)); 21 | } 22 | 23 | public void with(String username, String password) { 24 | type(username, usernameLocator); 25 | type(password, passwordLocator); 26 | click(submitButton); 27 | } 28 | 29 | public Boolean successMessagePresent() { 30 | return isDisplayed(successMessageLocator, 5); 31 | } 32 | 33 | public Boolean failureMessagePresent() { 34 | return isDisplayed(failureMessageLocator, 5); 35 | } 36 | 37 | } -------------------------------------------------------------------------------- /06-explicit-waits/src/test/java/tests/TestDynamicLoading.java: -------------------------------------------------------------------------------- 1 | package tests; 2 | 3 | import org.junit.Test; 4 | import org.junit.Before; 5 | import org.junit.After; 6 | import static org.junit.Assert.*; 7 | import org.openqa.selenium.WebDriver; 8 | import org.openqa.selenium.firefox.FirefoxDriver; 9 | import pageobjects.DynamicLoading; 10 | 11 | public class TestDynamicLoading { 12 | 13 | private WebDriver driver; 14 | private DynamicLoading dynamicLoading; 15 | 16 | @Before 17 | public void setUp() { 18 | driver = new FirefoxDriver(); 19 | dynamicLoading = new DynamicLoading(driver); 20 | } 21 | 22 | @Test 23 | public void hiddenElementLoads() { 24 | dynamicLoading.loadExample("1"); 25 | assertTrue("finish text didn't display after loading", 26 | dynamicLoading.finishTextPresent()); 27 | } 28 | 29 | @Test 30 | public void elementAppears() { 31 | dynamicLoading.loadExample("2"); 32 | assertTrue("finish text didn't render after loading", 33 | dynamicLoading.finishTextPresent()); 34 | } 35 | 36 | @After 37 | public void tearDown() { 38 | driver.quit(); 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /06-explicit-waits/src/test/java/tests/TestLogin.java: -------------------------------------------------------------------------------- 1 | package tests; 2 | 3 | import org.junit.Test; 4 | import org.junit.Before; 5 | import org.junit.After; 6 | import static org.junit.Assert.*; 7 | import org.openqa.selenium.WebDriver; 8 | import org.openqa.selenium.firefox.FirefoxDriver; 9 | import pageobjects.Login; 10 | 11 | public class TestLogin { 12 | 13 | private WebDriver driver; 14 | private Login login; 15 | 16 | @Before 17 | public void setUp() { 18 | driver = new FirefoxDriver(); 19 | login = new Login(driver); 20 | } 21 | 22 | @Test 23 | public void succeeded() { 24 | login.with("tomsmith", "SuperSecretPassword!"); 25 | assertTrue("success message not present", 26 | login.successMessagePresent()); 27 | } 28 | 29 | @Test 30 | public void failed() { 31 | login.with("tomsmith", "bad password"); 32 | assertTrue("failure message wasn't present after providing bogus credentials", 33 | login.failureMessagePresent()); 34 | assertFalse("success message was present after providing bogus credentials", 35 | login.successMessagePresent()); 36 | } 37 | 38 | @After 39 | public void tearDown() { 40 | driver.quit(); 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /07-framework/pom.xml: -------------------------------------------------------------------------------- 1 | 3 | 4.0.0 4 | com.seleniumguidebook.examples 5 | seleniumguidebook-example-07 6 | jar 7 | 1.0-SNAPSHOT 8 | seleniumguidebook-example-07 9 | http://maven.apache.org 10 | 11 | 12 | 13 | 14 | junit 15 | junit 16 | 4.12 17 | test 18 | 19 | 20 | 21 | org.seleniumhq.selenium 22 | selenium-java 23 | 3.3.1 24 | 25 | 26 | 27 | com.saucelabs 28 | saucerest 29 | 1.0.35 30 | test 31 | 32 | 33 | 34 | 35 | 36 | 37 | lib 38 | lib 39 | 40 | true 41 | ignore 42 | 43 | 44 | false 45 | 46 | file://${project.basedir}\..\lib 47 | 48 | 49 | 50 | 51 | saucelabs-repository 52 | https://repository-saucelabs.forge.cloudbees.com/release 53 | 54 | true 55 | 56 | 57 | true 58 | 59 | 60 | 61 | 62 | 63 | tests.groups.Shallow 64 | 65 | 66 | 67 | 68 | 69 | 70 | org.apache.maven.plugins 71 | maven-surefire-plugin 72 | 2.19.1 73 | 74 | classesAndMethods 75 | 5 76 | random 77 | ${groups} 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | -------------------------------------------------------------------------------- /07-framework/src/test/java/pageobjects/Base.java: -------------------------------------------------------------------------------- 1 | package pageobjects; 2 | 3 | import org.openqa.selenium.By; 4 | import org.openqa.selenium.WebDriver; 5 | import org.openqa.selenium.WebElement; 6 | import org.openqa.selenium.support.ui.ExpectedConditions; 7 | import org.openqa.selenium.support.ui.WebDriverWait; 8 | 9 | import static tests.Config.baseUrl; 10 | 11 | public class Base { 12 | 13 | private WebDriver driver; 14 | 15 | public Base(WebDriver driver) { 16 | this.driver = driver; 17 | } 18 | 19 | public void visit(String url) { 20 | if (url.contains("http")) { 21 | driver.get(url); 22 | } else { 23 | driver.get(baseUrl + url); 24 | } 25 | } 26 | 27 | public WebElement find(By locator) { 28 | return driver.findElement(locator); 29 | } 30 | 31 | public void click(By locator) { 32 | find(locator).click(); 33 | } 34 | 35 | public void type(String inputText, By locator) { 36 | find(locator).sendKeys(inputText); 37 | } 38 | 39 | public Boolean isDisplayed(By locator) { 40 | try { 41 | return find(locator).isDisplayed(); 42 | } catch (org.openqa.selenium.NoSuchElementException exception) { 43 | return false; 44 | } 45 | } 46 | 47 | public Boolean isDisplayed(By locator, Integer timeout) { 48 | try { 49 | WebDriverWait wait = new WebDriverWait(driver, timeout); 50 | wait.until(ExpectedConditions.visibilityOfElementLocated(locator)); 51 | } catch (org.openqa.selenium.TimeoutException exception) { 52 | return false; 53 | } 54 | return true; 55 | } 56 | } 57 | -------------------------------------------------------------------------------- /07-framework/src/test/java/pageobjects/DynamicLoading.java: -------------------------------------------------------------------------------- 1 | package pageobjects; 2 | 3 | import org.openqa.selenium.By; 4 | import org.openqa.selenium.WebDriver; 5 | 6 | public class DynamicLoading extends Base { 7 | 8 | By startButton = By.cssSelector("#start button"); 9 | By finishText = By.id("finish"); 10 | 11 | public DynamicLoading(WebDriver driver) { 12 | super(driver); 13 | } 14 | 15 | public void loadExample(String exampleNumber) { 16 | visit("/dynamic_loading/" + exampleNumber); 17 | click(startButton); 18 | } 19 | 20 | public Boolean finishTextPresent() { 21 | return isDisplayed(finishText, 10); 22 | } 23 | 24 | } 25 | -------------------------------------------------------------------------------- /07-framework/src/test/java/pageobjects/Login.java: -------------------------------------------------------------------------------- 1 | package pageobjects; 2 | 3 | import org.openqa.selenium.By; 4 | import org.openqa.selenium.WebDriver; 5 | import static org.junit.Assert.assertTrue; 6 | 7 | public class Login extends Base { 8 | 9 | By loginFormLocator = By.id("login"); 10 | By usernameLocator = By.id("username"); 11 | By passwordLocator = By.id("password"); 12 | By submitButton = By.cssSelector("button"); 13 | By successMessageLocator = By.cssSelector(".flash.success"); 14 | By failureMessageLocator = By.cssSelector(".flash.error"); 15 | 16 | public Login(WebDriver driver) { 17 | super(driver); 18 | visit("/login"); 19 | assertTrue("The login form is not present", 20 | isDisplayed(loginFormLocator)); 21 | } 22 | 23 | public void with(String username, String password) { 24 | type(username, usernameLocator); 25 | type(password, passwordLocator); 26 | click(submitButton); 27 | } 28 | 29 | public Boolean successMessagePresent() { 30 | return isDisplayed(successMessageLocator,5); 31 | } 32 | 33 | public Boolean failureMessagePresent() { 34 | return isDisplayed(failureMessageLocator); 35 | } 36 | } -------------------------------------------------------------------------------- /07-framework/src/test/java/tests/Base.java: -------------------------------------------------------------------------------- 1 | package tests; 2 | 3 | import com.saucelabs.saucerest.SauceREST; 4 | import org.junit.Rule; 5 | import org.junit.rules.ExternalResource; 6 | import org.junit.rules.TestRule; 7 | import org.junit.rules.TestWatcher; 8 | import org.junit.runner.Description; 9 | import org.openqa.selenium.WebDriver; 10 | import org.openqa.selenium.chrome.ChromeDriver; 11 | import org.openqa.selenium.firefox.FirefoxDriver; 12 | import org.openqa.selenium.remote.DesiredCapabilities; 13 | import org.openqa.selenium.remote.RemoteWebDriver; 14 | 15 | import java.net.URL; 16 | 17 | import static tests.Config.*; 18 | 19 | public class Base { 20 | 21 | protected WebDriver driver; 22 | private String testName; 23 | private String sessionId; 24 | private SauceREST sauceClient; 25 | 26 | @Rule 27 | public ExternalResource resource = new ExternalResource() { 28 | 29 | @Override 30 | protected void before() throws Throwable { 31 | if (host.equals("saucelabs")) { 32 | DesiredCapabilities capabilities = new DesiredCapabilities(); 33 | capabilities.setCapability("browserName", browser); 34 | capabilities.setCapability("version", browserVersion); 35 | capabilities.setCapability("platform", platform); 36 | capabilities.setCapability("name", testName); 37 | String sauceUrl = String.format("http://%s:%s@ondemand.saucelabs.com:80/wd/hub", 38 | sauceUser, sauceKey); 39 | driver = new RemoteWebDriver(new URL(sauceUrl), capabilities); 40 | sessionId = ((RemoteWebDriver) driver).getSessionId().toString(); 41 | sauceClient = new SauceREST(sauceUser, sauceKey); 42 | } else if (host.equals("localhost")) { 43 | if (browser.equals("firefox")) { 44 | driver = new FirefoxDriver(); 45 | } else if (browser.equals("chrome")) { 46 | System.setProperty("webdriver.chrome.driver", 47 | System.getProperty("user.dir") + "/vendor/chromedriver_mac32"); 48 | driver = new ChromeDriver(); 49 | } 50 | } 51 | } 52 | 53 | @Override 54 | protected void after() { 55 | driver.quit(); 56 | } 57 | 58 | }; 59 | 60 | @Rule 61 | public TestRule watcher = new TestWatcher() { 62 | 63 | protected void starting(Description description) { 64 | testName = description.getDisplayName(); 65 | } 66 | 67 | @Override 68 | protected void failed(Throwable throwable, Description description) { 69 | if (host.equals("saucelabs")) { 70 | sauceClient.jobFailed(sessionId); 71 | System.out.println(String.format("https://saucelabs.com/tests/%s", sessionId)); 72 | } 73 | } 74 | 75 | @Override 76 | protected void succeeded(Description description) { 77 | if (host.equals("saucelabs")) { 78 | sauceClient.jobPassed(sessionId); 79 | } 80 | } 81 | 82 | }; 83 | 84 | } -------------------------------------------------------------------------------- /07-framework/src/test/java/tests/Config.java: -------------------------------------------------------------------------------- 1 | package tests; 2 | 3 | public class Config { 4 | public static final String baseUrl = System.getProperty("baseUrl", "http://the-internet.herokuapp.com"); 5 | public static final String browser = System.getProperty("browser", "firefox"); 6 | public static final String host = System.getProperty("host", "localhost"); 7 | public static final String browserVersion = System.getProperty("browserVersion", "33"); 8 | public static final String platform = System.getProperty("platform", "Windows XP"); 9 | public static final String sauceUser = System.getenv("SAUCE_USERNAME"); 10 | public static final String sauceKey = System.getenv("SAUCE_ACCESS_KEY"); 11 | } -------------------------------------------------------------------------------- /07-framework/src/test/java/tests/TestDynamicLoading.java: -------------------------------------------------------------------------------- 1 | package tests; 2 | 3 | import org.junit.Test; 4 | import org.junit.Before; 5 | import static org.junit.Assert.*; 6 | import pageobjects.DynamicLoading; 7 | import org.junit.experimental.categories.Category; 8 | import tests.groups.Deep; 9 | 10 | @Category(Deep.class) 11 | public class TestDynamicLoading extends Base { 12 | 13 | private DynamicLoading dynamicLoading; 14 | 15 | @Before 16 | public void setUp() { 17 | dynamicLoading = new DynamicLoading(driver); 18 | } 19 | 20 | @Test 21 | public void hiddenElementLoads() { 22 | dynamicLoading.loadExample("1"); 23 | assertTrue("finish text didn't display after loading", 24 | dynamicLoading.finishTextPresent()); 25 | } 26 | 27 | @Test 28 | public void elementAppears() { 29 | dynamicLoading.loadExample("2"); 30 | assertTrue("finish text didn't render after loading", 31 | dynamicLoading.finishTextPresent()); 32 | } 33 | 34 | } 35 | -------------------------------------------------------------------------------- /07-framework/src/test/java/tests/TestLogin.java: -------------------------------------------------------------------------------- 1 | package tests; 2 | 3 | import org.junit.Test; 4 | import org.junit.Before; 5 | import static org.junit.Assert.*; 6 | import pageobjects.Login; 7 | import org.junit.experimental.categories.Category; 8 | import tests.groups.Shallow; 9 | 10 | public class TestLogin extends Base { 11 | 12 | private Login login; 13 | 14 | @Before 15 | public void setUp() { 16 | login = new Login(driver); 17 | } 18 | 19 | @Test 20 | @Category(Shallow.class) 21 | public void succeeded() { 22 | login.with("tomsmith", "SuperSecretPassword!"); 23 | assertTrue("success message not present", 24 | login.successMessagePresent()); 25 | } 26 | 27 | @Test 28 | @Category(Shallow.class) 29 | public void failed() { 30 | login.with("tomsmith", "bad password"); 31 | assertTrue("failure message wasn't present after providing bogus credentials", 32 | login.failureMessagePresent()); 33 | assertFalse("success message was present after providing bogus credentials", 34 | login.successMessagePresent()); 35 | } 36 | 37 | } 38 | -------------------------------------------------------------------------------- /07-framework/src/test/java/tests/groups/All.java: -------------------------------------------------------------------------------- 1 | package tests.groups; 2 | 3 | public interface All { 4 | } 5 | -------------------------------------------------------------------------------- /07-framework/src/test/java/tests/groups/Deep.java: -------------------------------------------------------------------------------- 1 | package tests.groups; 2 | 3 | public interface Deep extends All { 4 | } 5 | -------------------------------------------------------------------------------- /07-framework/src/test/java/tests/groups/Shallow.java: -------------------------------------------------------------------------------- 1 | package tests.groups; 2 | 3 | public interface Shallow extends All { 4 | } 5 | -------------------------------------------------------------------------------- /07-framework/vendor/chromedriver_mac32: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/saucelabs-training/selenium-workshop-code-examples/7ca5e23b4ebfc6c7b25f476bc06cc5023797d254/07-framework/vendor/chromedriver_mac32 -------------------------------------------------------------------------------- /07-framework/vendor/chromedriver_win32.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/saucelabs-training/selenium-workshop-code-examples/7ca5e23b4ebfc6c7b25f476bc06cc5023797d254/07-framework/vendor/chromedriver_win32.exe -------------------------------------------------------------------------------- /07-framework/vendor/sauce-connect/bin/sc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/saucelabs-training/selenium-workshop-code-examples/7ca5e23b4ebfc6c7b25f476bc06cc5023797d254/07-framework/vendor/sauce-connect/bin/sc -------------------------------------------------------------------------------- /07-framework/vendor/sauce-connect/bin/sc.dSYM/Contents/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | English 7 | CFBundleIdentifier 8 | com.apple.xcode.dsym.sc 9 | CFBundleInfoDictionaryVersion 10 | 6.0 11 | CFBundlePackageType 12 | dSYM 13 | CFBundleSignature 14 | ???? 15 | CFBundleShortVersionString 16 | 1.0 17 | CFBundleVersion 18 | 1 19 | 20 | 21 | -------------------------------------------------------------------------------- /07-framework/vendor/sauce-connect/bin/sc.dSYM/Contents/Resources/DWARF/sc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/saucelabs-training/selenium-workshop-code-examples/7ca5e23b4ebfc6c7b25f476bc06cc5023797d254/07-framework/vendor/sauce-connect/bin/sc.dSYM/Contents/Resources/DWARF/sc -------------------------------------------------------------------------------- /07-framework/vendor/sauce-connect/include/sauceconnect.h: -------------------------------------------------------------------------------- 1 | #ifndef _SAUCECONNECT_H 2 | #define _SAUCECONNECT_H 3 | 4 | #include 5 | 6 | /* 7 | * The definition of this structure is hidden from the API to be able to 8 | * provide ABI compatibility if our Sauce Connect implementation changes. Use 9 | * sc_new() and sc_free() to create/free it. 10 | */ 11 | struct sc_ctx; 12 | 13 | /* 14 | * Create/free a new Sauce Connect context. This can be called multiple times 15 | * to create independent instances, to e.g. use multiple accounts. 16 | */ 17 | struct sc_ctx *sc_new(void); 18 | void sc_free(struct sc_ctx *ctx); 19 | 20 | /* 21 | * Setter/getter for configuration parameters. vlen is the size of value. Do 22 | * this before calling sc_init(). 23 | */ 24 | #define SC_PARAM_IS_SERVER 0x01 /* int */ 25 | #define SC_PARAM_KGP_HOST 0x02 /* char * */ 26 | #define SC_PARAM_KGP_PORT 0x03 /* int */ 27 | #define SC_PARAM_EXT_HOST 0x04 /* char * */ 28 | #define SC_PARAM_EXT_PORT 0x05 /* int */ 29 | #define SC_PARAM_CERTFILE 0x06 /* char * */ 30 | #define SC_PARAM_KEYFILE 0x07 /* char * */ 31 | #define SC_PARAM_LOCAL_PORT 0x08 /* int */ 32 | #define SC_PARAM_USER 0x09 /* char * */ 33 | #define SC_PARAM_API_KEY 0x0a /* char * */ 34 | #define SC_PARAM_PROXY 0x0b /* char * */ 35 | #define SC_PARAM_PROXY_USERPWD 0x0c /* char * */ 36 | #define SC_PARAM_RECONNECT 0x0d /* int */ 37 | int sc_get(struct sc_ctx *ctx, int param, void *value, size_t vlen); 38 | int sc_set(struct sc_ctx *ctx, int param, void *value); 39 | 40 | /* 41 | * Once we have set up our ctx, do some initialization. This makes sure 42 | * everything is ready to start a new connection. Do this only after 43 | * parameters are set via sc_set(). 44 | */ 45 | int sc_init(struct sc_ctx *ctx); 46 | 47 | /* 48 | * Run the main event loop: connect to the peer, and start forwarding. Only 49 | * returns if sc_stop() is called from another thread, or a fatal error 50 | * happens Sauce Connect can't recover from. 51 | */ 52 | int sc_run(struct sc_ctx *ctx); 53 | 54 | /* 55 | * Stop the Sauce Connect main event loop. This can be used from e.g. another 56 | * thread to stop SC in a clean way. 57 | */ 58 | int sc_stop(struct sc_ctx *ctx); 59 | 60 | /* 61 | * Get the current status of Sauce Connect. 62 | */ 63 | #define SC_STATUS_RUNNING 0x01 64 | #define SC_STATUS_EXITING 0x02 65 | int sc_status(struct sc_ctx *ctx); 66 | 67 | /* 68 | * Get information on Sauce Connect internals. 69 | */ 70 | #define SC_INFO_KGP_IS_CONNECTED 0x01 71 | #define SC_INFO_KGP_LAST_STATUS_CHANGE 0x02 72 | int sc_get_info(struct sc_ctx *ctx, int what, int *info); 73 | 74 | /* 75 | * Set a log callback the library will call when logging messages. 76 | */ 77 | typedef void (*sc_log_cb)(int severity, const char *msg); 78 | 79 | void sc_set_log_fn(sc_log_cb cb); 80 | 81 | #define SC_EXITCODE_UNKNOWN 0 82 | #define SC_EXITCODE_ALLOC_ERROR 1 83 | #define SC_EXITCODE_LOCAL_LISTEN_ERROR 2 84 | #define SC_EXITCODE_LOCAL_ACCEPT_ERROR 3 85 | #define SC_EXITCODE_KGP_INVALID_PACKET 4 86 | #define SC_EXITCODE_KGP_CONNECT_ERROR 5 87 | #define SC_EXITCODE_KGP_CONNECTION_CLOSED 6 88 | #define SC_EXITCODE_KGP_LISTEN_ERROR 7 89 | #define SC_EXITCODE_CMD_STOP 8 90 | #define SC_EXITCODE_CMD_SOCKET_ERROR 9 91 | #define SC_EXITCODE_CMD_CONNECTION_CLOSED 10 92 | #define SC_EXITCODE_DNS_RESET_ERROR 11 93 | int sc_error(struct sc_ctx *ctx); 94 | 95 | static inline char *sc_err2str(int exitcode) 96 | { 97 | switch (exitcode) { 98 | case SC_EXITCODE_UNKNOWN: 99 | return "Unknown error or no error occured"; 100 | break; 101 | case SC_EXITCODE_ALLOC_ERROR: 102 | return "Allocation failed - out of memory?"; 103 | break; 104 | case SC_EXITCODE_LOCAL_LISTEN_ERROR: 105 | return "Failed to start Selenium listener. " 106 | "Please make sure there are no other applications using " 107 | "the Selenium port, or specify an alternative port for " 108 | "Sauce Connect via the --se-port option"; 109 | break; 110 | case SC_EXITCODE_LOCAL_ACCEPT_ERROR: 111 | return "Failed to accept Selenium connection"; 112 | break; 113 | case SC_EXITCODE_KGP_INVALID_PACKET: 114 | return "Invalid KGP packet received"; 115 | break; 116 | case SC_EXITCODE_KGP_CONNECT_ERROR: 117 | return "KGP connection error"; 118 | break; 119 | case SC_EXITCODE_KGP_CONNECTION_CLOSED: 120 | return "KGP connection closed from the other side"; 121 | break; 122 | case SC_EXITCODE_KGP_LISTEN_ERROR: 123 | return "Failed to start KGP listener"; 124 | break; 125 | case SC_EXITCODE_CMD_STOP: 126 | return "Terminated"; 127 | break; 128 | case SC_EXITCODE_CMD_SOCKET_ERROR: 129 | return "Internal error: command socket failure"; 130 | break; 131 | case SC_EXITCODE_CMD_CONNECTION_CLOSED: 132 | return "Internal error: command socket closed"; 133 | break; 134 | case SC_EXITCODE_DNS_RESET_ERROR: 135 | return "DNS reset failed"; 136 | break; 137 | default: 138 | return "Invalid exit code"; 139 | break; 140 | } 141 | } 142 | 143 | /* 144 | * Enable SSL verification for KGP. This is the default. 145 | */ 146 | void sc_ssl_enable_verification(void); 147 | 148 | /* 149 | * Disable SSL verification for KGP. This is the default. 150 | */ 151 | void sc_ssl_disable_verification(void); 152 | 153 | #endif 154 | -------------------------------------------------------------------------------- /07-framework/vendor/sauce-connect/lib/libsauceconnect.a: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/saucelabs-training/selenium-workshop-code-examples/7ca5e23b4ebfc6c7b25f476bc06cc5023797d254/07-framework/vendor/sauce-connect/lib/libsauceconnect.a -------------------------------------------------------------------------------- /07-framework/vendor/sauce-connect/lib/libsauceconnect.la: -------------------------------------------------------------------------------- 1 | # libsauceconnect.la - a libtool library file 2 | # Generated by libtool (GNU libtool) 2.4.2 3 | # 4 | # Please DO NOT delete this file! 5 | # It is necessary for linking the library. 6 | 7 | # The name that we can dlopen(3). 8 | dlname='' 9 | 10 | # Names of this library. 11 | library_names='' 12 | 13 | # The name of the static archive. 14 | old_library='libsauceconnect.a' 15 | 16 | # Linker flags that can not go in dependency_libs. 17 | inherited_linker_flags=' -framework CoreFoundation -framework Security' 18 | 19 | # Libraries that this one depends upon. 20 | dependency_libs=' -L/Users/travis/build/saucelabs/libsauceconnect/build/Darwin/openssl/lib -L/Users/travis/build/saucelabs/libsauceconnect/curl/ares /Users/travis/build/saucelabs/libsauceconnect/build/sc-build-1629/lib/libevent.la /Users/travis/build/saucelabs/libsauceconnect/build/sc-build-1629/lib/libevent_openssl.la /Users/travis/build/saucelabs/libsauceconnect/build/sc-build-1629/lib/libcares.la /Users/travis/build/saucelabs/libsauceconnect/build/sc-build-1629/lib/libcurl.la /Users/travis/build/saucelabs/libsauceconnect/build/sc-build-1629/lib/libcares.la -lz -lssl -lcrypto -ldl' 21 | 22 | # Names of additional weak libraries provided by this library 23 | weak_library_names='' 24 | 25 | # Version information for libsauceconnect. 26 | current=0 27 | age=0 28 | revision=0 29 | 30 | # Is this an already installed library? 31 | installed=yes 32 | 33 | # Should we warn about portability when linking against -modules? 34 | shouldnotlink=no 35 | 36 | # Files to dlopen/dlpreopen 37 | dlopen='' 38 | dlpreopen='' 39 | 40 | # Directory that this library needs to be installed in: 41 | libdir='/Users/travis/build/saucelabs/libsauceconnect/build/sc-build-1629/lib' 42 | -------------------------------------------------------------------------------- /07-framework/vendor/sauce-connect/license.html: -------------------------------------------------------------------------------- 1 | 3 | 4 | 5 | Sauce Connect License 6 | 7 | 8 | 9 |
10 |

11 | SAUCE LABS INC
12 | END USER LICENSE AGREEMENT (“EULA”)
13 | for:
14 | Public Release of Sauce Connect
15 |

16 |
17 | 18 |

19 | READ THIS AGREEMENT CAREFULLY. 20 |

21 |

22 | BY CLICKING ON THE “I AGREE” BUTTON OR INSTALLING OR USING ALL OR ANY PORTION OF THE SOFTWARE, YOU ARE ACCEPTING ALL OF THE TERMS AND CONDITIONS OF THIS AGREEMENT. YOU AGREE THAT THIS AGREEMENT IS ENFORCEABLE LIKE ANY WRITTEN AGREEMENT SIGNED BY YOU. 23 |

24 | IF YOU DO NOT AGREE TO ALL OF THESE TERMS AND CONDITIONS, CLICK “I DON’T AGREE”. YOU WILL NOT BE GIVEN ACCESS TO THE SOFTWARE UNLESS YOU ACCEPT THE TERMS OF THIS AGREEMENT. IF YOU HAVE PAID A LICENSE FEE FOR USE OF THE SOFTWARE AND DO NOT AGREE TO THESE TERMS, YOU MAY RETURN OR CONFIRM DELETION OF ALL COPIES OF THE SOFTWARE FOR A FULL REFUND PROVIDED YOU (A) DO NOT USE THE SOFTWARE AND (B) RETURN THE SOFTWARE WITHIN THIRTY (30) DAYS OF YOUR INITIAL PURCHASE. 25 |

26 | IF YOU WISH TO USE the Software AS AN EMPLOYEE, CONTRACTOR, OR AGENT OF A CORPORATION, PARTNERSHIP OR SIMILAR ENTITY, THEN YOU MUST BE AUTHORIZED TO SIGN FOR AND BIND THE ENTITY IN ORDER TO ACCEPT THE TERMS OF THIS AGREEMENT. THE LICENSES GRANTED UNDER THIS AGREEMENT ARE EXPRESSLY CONDITIONED UPON ACCEPTANCE BY SUCH AUTHORIZED PERSONNEL. 27 |

28 | IF YOU HAVE ENTERED INTO A SEPARATE WRITTEN LICENSE AGREEMENT WITH SAUCE LABS FOR USE OF THE SOFTWARE, THE TERMS AND CONDITIONS OF SUCH OTHER AGREEMENT SHALL PREVAIL OVER ANY CONFLICTING TERMS OR CONDITIONS IN THIS AGREEMENT. 29 |

30 | This End User License Agreement (“Agreement”) is between Sauce Labs Inc, located at 55 Sheridan St., San Francisco, CA 94103 (“Sauce Labs”) and the customer (individual or entity) that has downloaded or otherwise procured the licensed Software (as defined below) for use as an end user (“you”). This Agreement covers any Software and supporting technical documentation provided with the Software (“Documentation”). 31 |

32 |
33 |

1. Definitions.

34 |

35 | Effective Date: means the earlier of the date you sign an Order Form or the date on which the Software is first made available to you. 36 | Order Form: means any order on Sauce Labs’ standard order form which is executed by Sauce Labs and you and which references this Agreement. Each Order Form which references this Agreement shall be deemed a part of this Agreement. This Agreement is binding on you whether or not you execute an Order Form with Sauce Labs. 37 |

38 | Software: means the Sauce Labs software product(s) provided in connection with this Agreement in object code form. “Software” shall also include any releases provided to or purchased by you under any separate support and maintenance agreement you may enter into with Sauce Labs. Unless otherwise noted, the Software and Documentation are referred to collectively herein as “Software”. 39 |

40 |

2. License.

41 |

42 | 2.1 Grant of License. Subject to all of the terms and conditions of this Agreement, Sauce Labs grants you a non-transferable, non-sublicensable, non-exclusive license to use the Software, but only in accordance with (i) the Documentation, (ii) this Agreement and (iii) any license term, subscription term or other user, computer, field of use or other restrictions set forth in the applicable Order Form or otherwise specified upon download of the Software. 43 |

44 | 2.2 Installation and Copies. Sauce Labs shall deliver the Software and Documentation by disk or other media or make it available for download in electronic form. Sauce Labs shall also provide you with electronic passwords or other enabling mechanisms if necessary to permit the licensed usage of the Software. Delivery shall be deemed to occur as of the Effective Date (or, if later, such date on which the Software and license keys are first made available to you). You may copy and install the number of copies of Software you indicated to Sauce Labs at the time of download. You may also make one copy of the Software for back-up and archival purposes. 45 |

46 | 2.3 License Restrictions. You shall not (and shall not allow any third party to): (a) work around any technical limitations in the Software; (b) decompile, disassemble, or otherwise reverse engineer the Software or attempt to reconstruct or discover any source code, underlying ideas, algorithms, file formats or programming interfaces of the Software by any means whatsoever (except and only to the extent that applicable law prohibits or restricts reverse engineering restrictions);(c) distribute, sell, sublicense, rent, lease or use the Software (or any portion thereof) for time sharing, commercial hosting, service provider or like purposes; (d) remove any product identification, proprietary, copyright or other notices contained in the Software; (e) modify any part of the Software, create a derivative work of any part of the Software, or incorporate the Software into or with other software, except to the extent expressly authorized in writing by Sauce Labs; or (f) publicly disseminate performance information or analysis (including, without limitation, benchmarks) from any source relating to the Software. 47 |

48 | 2.4 Special Provision regarding Beta or Evaluation Code. If the Software was provided to you free of charge or is otherwise designated as a “beta” or “evaluation” release, you acknowledge that the Software may not be complete or fully functional and furthermore that Sauce Labs provides the Software to you without any support, maintenance or other obligation of any kind. Sauce Labs does not guarantee that the Software will continue to be made available for any period of time or that any future release of the Software will be made available under the same terms. 49 |

50 | 2.5 Third-Party Open Source Code. The Software may contain or be provided with components subject to the terms and conditions of “open source” software licenses (“Open Source Software”). Open Source Software may be identified in the Documentation, legal notices or as otherwise designated by Sauce Labs or provided to Customer upon Customer’s written request. To the extent required by the license that accompanies the Open Source Software, the terms of such license will apply in lieu of the terms of this Agreement with respect to such Open Source Software, including, without limitation, any provisions governing access to source code, modification or reverse engineering. 51 |

52 |

3. Ownership.

53 |

54 | Notwithstanding anything to the contrary contained herein, except for the limited license rights expressly provided herein, Sauce Labs and its suppliers have and will retain all rights, title and interest (including, without limitation, all patent, copyright, trademark, trade secret and other intellectual property rights) in and to the Software and all copies, modifications and derivative works thereof (including any changes which incorporate any of your ideas, feedback or suggestions). You acknowledge that you are obtaining only a limited license right to the Software and that irrespective of any use of the words “purchase”, “sale” or like terms hereunder no ownership rights are being conveyed to you in the Software or any copy of the Software under this Agreement or otherwise. 55 |

56 |

4. Term of Agreement.

57 |

58 | 4.1 Term. This Agreement is effective as of the Effective Date and expires at such time as all licenses hereunder have expired in accordance with their own terms (the “Term”). Either party may terminate this Agreement (including all related Order Forms) if the other party: (a) fails to cure any material breach of this Agreement within thirty (30) days after written notice of such breach; (b) ceases operation without a successor; or (c) seeks protection under any bankruptcy, receivership, trust deed, creditors arrangement, composition or comparable proceeding, or if any such proceeding is instituted against such party (and not dismissed within sixty (60) days)). Termination is not an exclusive remedy and the exercise by either party of any remedy under this Agreement will be without prejudice to any other remedies it may have under this Agreement, by law, or otherwise. 59 |

60 | 4.2 Termination. Upon any expiration or termination of this Agreement, you shall cease any and all use of any Software and destroy all copies thereof and so certify to Sauce Labs in writing. 61 |

62 | 4.3 Survival. Sections 2.3 (License Restrictions), 3 (Ownership), 4 (Term of Agreement), 5 (Warranty Disclaimer), 7 (Limitation of Remedies and Damages), 8 (Confidential Information), 10 (Export Compliance) and 11 (General) shall survive any termination or expiration of this Agreement. 63 | 64 |

5. Warranty Disclaimer.

65 |

66 | THE SOFTWARE AND ALL SERVICES ARE PROVIDED “AS IS”. NEITHER SAUCE LABS NOR ITS SUPPLIERS MAKES ANY OTHER WARRANTIES, CONDITIONS OR UNDERTAKINGS, EXPRESS OR IMPLIED, STATUTORY OR OTHERWISE, INCLUDING BUT NOT LIMITED TO WARRANTIES OF title, MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR NONINFRINGEMENT. 67 |

68 | YOU MAY HAVE ADDITIONAL CONSUMER RIGHTS UNDER YOUR LOCAL LAWS, WHICH THIS AGREEMENT CANNOT CHANGE. 69 |

70 |

6. Support & Maintenance.

71 |

Sauce Labs may provide the support and maintenance services, if any, as 72 | separately purchased by you and specified in the applicable Order Form. All 73 | support & maintenance shall be provided pursuant to Sauce Labs’ standard service terms which are available upon request from Sauce Labs. 74 |

75 |

7. Limitation of Remedies and Damages.

76 |

77 | 7.1 NEITHER YOU NOR Sauce Labs (Including Sauce Labs’ suppliers) SHALL BE LIABLE FOR ANY LOSS OF USE, LOST DATA, FAILURE OF SECURITY MECHANISMS, INTERRUPTION OF BUSINESS, OR ANY INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY KIND (INCLUDING LOST PROFITS), REGARDLESS OF THE FORM OF ACTION, WHETHER IN CONTRACT, TORT (INCLUDING NEGLIGENCE), STRICT LIABILITY OR OTHERWISE, EVEN IF INFORMED OF THE POSSIBILITY OF SUCH DAMAGES IN ADVANCE. 78 |

79 | 7.2 NOTWITHSTANDING ANY OTHER PROVISION OF THIS AGREEMENT, SAUCE LABS AND ITS SUPPLIERS’ ENTIRE LIABILITY TO YOU UNDER THIS AGREEMENT SHALL NOT EXCEED THE AMOUNT ACTUALLY PAID BY YOU TO SAUCE LABS UNDER THIS AGREEMENT. 80 |

81 | 7.3 The parties agree that the limitations specified in this Section 7 will survive and apply even if any limited remedy specified in this Agreement is found to have failed of its essential purpose. 82 |

83 |

8. Confidential Information.

84 |

Any software, documentation or technical information provided by Sauce Labs (or its agents) shall be deemed “Sauce Labs Confidential Information” without any marking or further designation. Except as expressly authorized herein, you will hold in confidence and not use or disclose any Sauce Labs Confidential Information. You acknowledge that disclosure of Sauce Labs Confidential Information would cause substantial harm to Sauce Labs that could not be remedied by the payment of damages alone and therefore that upon any such disclosure by you, Sauce Labs shall be entitled to appropriate equitable relief in addition to whatever remedies it might have at law. 85 |

86 |

9. Customer Acknowledgement.

87 |

88 | You agree that Sauce Labs may disclose you as a customer of Sauce Labs. 89 |

90 |

10. Export Compliance.

91 |

You acknowledge that the Software is subject to export restrictions by the United States government and import restrictions by certain foreign governments. You shall not, and shall not allow any third-party to, remove or export from the United States or allow the export or re-export of any part of the Software or any direct product thereof: (i) into (or to a national or resident of) any embargoed or terrorist-supporting country; (ii) to anyone on the U.S. Commerce Department’s Table of Denial Orders or U.S. Treasury Department’s list of Specially Designated Nationals; (iii) to any country to which such export or re-export is restricted or prohibited, or as to which the United States government or any agency thereof requires an export license or other governmental approval at the time of export or re-export without first obtaining such license or approval; or (iv) otherwise in violation of any export or import restrictions, laws or regulations of any United States or foreign agency or authority. You agree to the foregoing and warrant that you are not located in, under the control of, or a national or resident of any such prohibited country or on any such prohibited party list. The Software is further restricted from being used for the design or development of nuclear, chemical, or biological weapons or missile technology, or for terrorist activity, without the prior permission of the United States government. 92 |

93 |

11. General.

94 |

95 | 11.1 Assignment. This Agreement will bind and inure to the benefit of each party’s permitted successors and assigns. Sauce Labs may assign this Agreement to any affiliate or in connection with a merger, reorganization, acquisition or other transfer of all or substantially all of Sauce Labs’ assets or voting securities. You may not assign or transfer this Agreement, in whole or in part, without Sauce Labs’ written consent. Any attempt to transfer or assign this Agreement without such written consent will be null and void. 96 |

97 | 11.2 Severability. If any provision of this Agreement shall be adjudged by any court of competent jurisdiction to be unenforceable or invalid, that provision shall be limited to the minimum extent necessary so that this Agreement shall otherwise remain in effect. 98 |

99 | 11.3 Governing Law; Jurisdiction and Venue. This Agreement shall be governed by the laws of The State of California and the United States without regard to conflicts of laws provisions thereof, and without regard to the United Nations Convention on the International Sale of Goods. The jurisdiction and venue for actions related to the subject matter hereof shall be the California state and United States federal courts located in San Francisco, California, and both parties hereby submit to the personal jurisdiction of such courts. 100 |

101 | 11.4 Attorneys’ Fees and Costs. The prevailing party in any action to enforce this Agreement will be entitled to recover its attorneys’ fees and costs in connection with such action. 102 |

103 | 11.5 Notices and Reports. Any notice or report hereunder shall be in writing. If to Sauce Labs, such notice or report shall be sent to Sauce Labs at the address above to the attention of “Legal Department”. If to you, such notice or report shall be sent to the address you provided upon placing your order. Notices and reports shall be deemed given: (i) upon receipt if by personal delivery; (ii) upon receipt if sent by certified or registered U.S. mail (return receipt requested); or (iii) one day after it is sent if by next day delivery by a major commercial delivery service. 104 |

105 | 11.6 Amendments; Waivers. No supplement, modification, or amendment of this Agreement shall be binding, unless executed in writing by a duly authorized representative of each party to this Agreement. No waiver will be implied from conduct or failure to enforce or exercise rights under this Agreement, nor will any waiver be effective unless in a writing signed by a duly authorized representative on behalf of the party claimed to have waived. 106 |

107 | 11.7 Entire Agreement. This Agreement is the complete and exclusive statement of the mutual understanding of the parties and supersedes and cancels all previous written and oral agreements and communications relating to the subject matter of this Agreement. No provision of any purchase order or in any other business form employed by you will supersede the terms and conditions of this Agreement, and any such document issued by a party hereto relating to this Agreement shall be for administrative purposes only and shall have no legal effect. Notwithstanding the foregoing, if you have entered into a separate written license agreement signed by Sauce Labs for use of the Software, the terms and conditions of such other agreement shall prevail over any conflicting terms or conditions in this Agreement. 108 |

109 | 11.8 Independent Contractors. The parties to this Agreement are independent contractors. There is no relationship of partnership, joint venture, employment, franchise or agency created hereby between the parties. Neither party will have the power to bind the other or incur obligations on the other party’s behalf without the other party’s prior written consent. 110 |

111 | 11.9 Force Majeure. Neither party shall be liable to the other for any delay or failure to perform any obligation under this Agreement (except for a failure to pay fees) if the delay or failure is due to unforeseen events, which occur after the signing of this Agreement and which are beyond the reasonable control of the parties, such as strikes, blockade, war, terrorism, riots, natural disasters, refusal of license by the government or other governmental agencies, in so far as such an event prevents or delays the affected party from fulfilling its obligations and such party is not able to prevent or remove the force majeure at reasonable cost. 112 |

113 | 11.10 Government End-Users. The Software is commercial computer software. If the user or licensee of the Software is an agency, department, or other entity of the United States Government, the use, duplication, reproduction, release, modification, disclosure, or transfer of the Software, or any related documentation of any kind, including technical data and manuals, is restricted by a license agreement or by the terms of this Agreement in accordance with Federal Acquisition Regulation 12.212 for civilian purposes and Defense Federal Acquisition Regulation Supplement 227.7202 for military purposes. The Software was developed fully at private expense. All other use is prohibited. 114 |

115 | 116 | 117 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # workshop 2 | 3 | from the 7 folder run this command 4 | 5 | mvn dependency:copy-dependencies -Dmdep.useRepositoryLayout=true -DoutputDirectory=../lib 6 | -------------------------------------------------------------------------------- /lib/cglib/cglib-nodep/3.2.4/cglib-nodep-3.2.4.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/saucelabs-training/selenium-workshop-code-examples/7ca5e23b4ebfc6c7b25f476bc06cc5023797d254/lib/cglib/cglib-nodep/3.2.4/cglib-nodep-3.2.4.jar -------------------------------------------------------------------------------- /lib/cglib/cglib-nodep/maven-metadata-local.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | cglib 4 | cglib-nodep 5 | 6 | 3.2.4 7 | 8 | 3.2.4 9 | 10 | 20170324200031 11 | 12 | 13 | -------------------------------------------------------------------------------- /lib/com/codeborne/phantomjsdriver/1.4.0/phantomjsdriver-1.4.0.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/saucelabs-training/selenium-workshop-code-examples/7ca5e23b4ebfc6c7b25f476bc06cc5023797d254/lib/com/codeborne/phantomjsdriver/1.4.0/phantomjsdriver-1.4.0.jar -------------------------------------------------------------------------------- /lib/com/codeborne/phantomjsdriver/maven-metadata-local.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | com.codeborne 4 | phantomjsdriver 5 | 6 | 1.4.0 7 | 8 | 1.4.0 9 | 10 | 20170324200031 11 | 12 | 13 | -------------------------------------------------------------------------------- /lib/com/google/code/gson/gson/2.8.0/gson-2.8.0.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/saucelabs-training/selenium-workshop-code-examples/7ca5e23b4ebfc6c7b25f476bc06cc5023797d254/lib/com/google/code/gson/gson/2.8.0/gson-2.8.0.jar -------------------------------------------------------------------------------- /lib/com/google/code/gson/gson/maven-metadata-local.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | com.google.code.gson 4 | gson 5 | 6 | 2.8.0 7 | 8 | 2.8.0 9 | 10 | 20170324200031 11 | 12 | 13 | -------------------------------------------------------------------------------- /lib/com/google/guava/guava/21.0/guava-21.0.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/saucelabs-training/selenium-workshop-code-examples/7ca5e23b4ebfc6c7b25f476bc06cc5023797d254/lib/com/google/guava/guava/21.0/guava-21.0.jar -------------------------------------------------------------------------------- /lib/com/google/guava/guava/maven-metadata-local.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | com.google.guava 4 | guava 5 | 6 | 21.0 7 | 8 | 21.0 9 | 10 | 20170324200031 11 | 12 | 13 | -------------------------------------------------------------------------------- /lib/com/googlecode/json-simple/json-simple/1.1.1/json-simple-1.1.1.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/saucelabs-training/selenium-workshop-code-examples/7ca5e23b4ebfc6c7b25f476bc06cc5023797d254/lib/com/googlecode/json-simple/json-simple/1.1.1/json-simple-1.1.1.jar -------------------------------------------------------------------------------- /lib/com/googlecode/json-simple/json-simple/maven-metadata-local.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | com.googlecode.json-simple 4 | json-simple 5 | 6 | 1.1.1 7 | 8 | 1.1.1 9 | 10 | 20170324200031 11 | 12 | 13 | -------------------------------------------------------------------------------- /lib/com/saucelabs/saucerest/1.0.35/saucerest-1.0.35.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/saucelabs-training/selenium-workshop-code-examples/7ca5e23b4ebfc6c7b25f476bc06cc5023797d254/lib/com/saucelabs/saucerest/1.0.35/saucerest-1.0.35.jar -------------------------------------------------------------------------------- /lib/com/saucelabs/saucerest/maven-metadata-local.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | com.saucelabs 4 | saucerest 5 | 6 | 1.0.35 7 | 8 | 1.0.35 9 | 10 | 20170324200031 11 | 12 | 13 | -------------------------------------------------------------------------------- /lib/commons-codec/commons-codec/1.9/commons-codec-1.9.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/saucelabs-training/selenium-workshop-code-examples/7ca5e23b4ebfc6c7b25f476bc06cc5023797d254/lib/commons-codec/commons-codec/1.9/commons-codec-1.9.jar -------------------------------------------------------------------------------- /lib/commons-codec/commons-codec/maven-metadata-local.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | commons-codec 4 | commons-codec 5 | 6 | 1.9 7 | 8 | 1.9 9 | 10 | 20170324200031 11 | 12 | 13 | -------------------------------------------------------------------------------- /lib/commons-io/commons-io/2.5/commons-io-2.5.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/saucelabs-training/selenium-workshop-code-examples/7ca5e23b4ebfc6c7b25f476bc06cc5023797d254/lib/commons-io/commons-io/2.5/commons-io-2.5.jar -------------------------------------------------------------------------------- /lib/commons-io/commons-io/maven-metadata-local.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | commons-io 4 | commons-io 5 | 6 | 2.5 7 | 8 | 2.5 9 | 10 | 20170324200031 11 | 12 | 13 | -------------------------------------------------------------------------------- /lib/commons-logging/commons-logging/1.2/commons-logging-1.2.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/saucelabs-training/selenium-workshop-code-examples/7ca5e23b4ebfc6c7b25f476bc06cc5023797d254/lib/commons-logging/commons-logging/1.2/commons-logging-1.2.jar -------------------------------------------------------------------------------- /lib/commons-logging/commons-logging/maven-metadata-local.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | commons-logging 4 | commons-logging 5 | 6 | 1.2 7 | 8 | 1.2 9 | 10 | 20170324200031 11 | 12 | 13 | -------------------------------------------------------------------------------- /lib/junit/junit/4.12/junit-4.12.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/saucelabs-training/selenium-workshop-code-examples/7ca5e23b4ebfc6c7b25f476bc06cc5023797d254/lib/junit/junit/4.12/junit-4.12.jar -------------------------------------------------------------------------------- /lib/junit/junit/maven-metadata-local.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | junit 4 | junit 5 | 6 | 4.12 7 | 8 | 4.12 9 | 10 | 20170324200031 11 | 12 | 13 | -------------------------------------------------------------------------------- /lib/net/java/dev/jna/jna-platform/4.1.0/jna-platform-4.1.0.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/saucelabs-training/selenium-workshop-code-examples/7ca5e23b4ebfc6c7b25f476bc06cc5023797d254/lib/net/java/dev/jna/jna-platform/4.1.0/jna-platform-4.1.0.jar -------------------------------------------------------------------------------- /lib/net/java/dev/jna/jna-platform/maven-metadata-local.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | net.java.dev.jna 4 | jna-platform 5 | 6 | 4.1.0 7 | 8 | 4.1.0 9 | 10 | 20170324200031 11 | 12 | 13 | -------------------------------------------------------------------------------- /lib/net/java/dev/jna/jna/4.1.0/jna-4.1.0.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/saucelabs-training/selenium-workshop-code-examples/7ca5e23b4ebfc6c7b25f476bc06cc5023797d254/lib/net/java/dev/jna/jna/4.1.0/jna-4.1.0.jar -------------------------------------------------------------------------------- /lib/net/java/dev/jna/jna/maven-metadata-local.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | net.java.dev.jna 4 | jna 5 | 6 | 4.1.0 7 | 8 | 4.1.0 9 | 10 | 20170324200031 11 | 12 | 13 | -------------------------------------------------------------------------------- /lib/net/sourceforge/cssparser/cssparser/0.9.21/cssparser-0.9.21.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/saucelabs-training/selenium-workshop-code-examples/7ca5e23b4ebfc6c7b25f476bc06cc5023797d254/lib/net/sourceforge/cssparser/cssparser/0.9.21/cssparser-0.9.21.jar -------------------------------------------------------------------------------- /lib/net/sourceforge/cssparser/cssparser/maven-metadata-local.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | net.sourceforge.cssparser 4 | cssparser 5 | 6 | 0.9.21 7 | 8 | 0.9.21 9 | 10 | 20170324200031 11 | 12 | 13 | -------------------------------------------------------------------------------- /lib/net/sourceforge/htmlunit/htmlunit-core-js/2.23/htmlunit-core-js-2.23.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/saucelabs-training/selenium-workshop-code-examples/7ca5e23b4ebfc6c7b25f476bc06cc5023797d254/lib/net/sourceforge/htmlunit/htmlunit-core-js/2.23/htmlunit-core-js-2.23.jar -------------------------------------------------------------------------------- /lib/net/sourceforge/htmlunit/htmlunit-core-js/maven-metadata-local.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | net.sourceforge.htmlunit 4 | htmlunit-core-js 5 | 6 | 2.23 7 | 8 | 2.23 9 | 10 | 20170324200031 11 | 12 | 13 | -------------------------------------------------------------------------------- /lib/net/sourceforge/htmlunit/htmlunit/2.24/htmlunit-2.24.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/saucelabs-training/selenium-workshop-code-examples/7ca5e23b4ebfc6c7b25f476bc06cc5023797d254/lib/net/sourceforge/htmlunit/htmlunit/2.24/htmlunit-2.24.jar -------------------------------------------------------------------------------- /lib/net/sourceforge/htmlunit/htmlunit/maven-metadata-local.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | net.sourceforge.htmlunit 4 | htmlunit 5 | 6 | 2.24 7 | 8 | 2.24 9 | 10 | 20170324200031 11 | 12 | 13 | -------------------------------------------------------------------------------- /lib/net/sourceforge/htmlunit/neko-htmlunit/2.24/neko-htmlunit-2.24.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/saucelabs-training/selenium-workshop-code-examples/7ca5e23b4ebfc6c7b25f476bc06cc5023797d254/lib/net/sourceforge/htmlunit/neko-htmlunit/2.24/neko-htmlunit-2.24.jar -------------------------------------------------------------------------------- /lib/net/sourceforge/htmlunit/neko-htmlunit/maven-metadata-local.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | net.sourceforge.htmlunit 4 | neko-htmlunit 5 | 6 | 2.24 7 | 8 | 2.24 9 | 10 | 20170324200031 11 | 12 | 13 | -------------------------------------------------------------------------------- /lib/org/apache/commons/commons-exec/1.3/commons-exec-1.3.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/saucelabs-training/selenium-workshop-code-examples/7ca5e23b4ebfc6c7b25f476bc06cc5023797d254/lib/org/apache/commons/commons-exec/1.3/commons-exec-1.3.jar -------------------------------------------------------------------------------- /lib/org/apache/commons/commons-exec/maven-metadata-local.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | org.apache.commons 4 | commons-exec 5 | 6 | 1.3 7 | 8 | 1.3 9 | 10 | 20170324200031 11 | 12 | 13 | -------------------------------------------------------------------------------- /lib/org/apache/commons/commons-lang3/3.5/commons-lang3-3.5.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/saucelabs-training/selenium-workshop-code-examples/7ca5e23b4ebfc6c7b25f476bc06cc5023797d254/lib/org/apache/commons/commons-lang3/3.5/commons-lang3-3.5.jar -------------------------------------------------------------------------------- /lib/org/apache/commons/commons-lang3/maven-metadata-local.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | org.apache.commons 4 | commons-lang3 5 | 6 | 3.5 7 | 8 | 3.5 9 | 10 | 20170324200031 11 | 12 | 13 | -------------------------------------------------------------------------------- /lib/org/apache/httpcomponents/httpclient/4.5/httpclient-4.5.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/saucelabs-training/selenium-workshop-code-examples/7ca5e23b4ebfc6c7b25f476bc06cc5023797d254/lib/org/apache/httpcomponents/httpclient/4.5/httpclient-4.5.jar -------------------------------------------------------------------------------- /lib/org/apache/httpcomponents/httpclient/maven-metadata-local.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | org.apache.httpcomponents 4 | httpclient 5 | 6 | 4.5 7 | 8 | 4.5 9 | 10 | 20170324200031 11 | 12 | 13 | -------------------------------------------------------------------------------- /lib/org/apache/httpcomponents/httpcore/4.4.1/httpcore-4.4.1.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/saucelabs-training/selenium-workshop-code-examples/7ca5e23b4ebfc6c7b25f476bc06cc5023797d254/lib/org/apache/httpcomponents/httpcore/4.4.1/httpcore-4.4.1.jar -------------------------------------------------------------------------------- /lib/org/apache/httpcomponents/httpcore/maven-metadata-local.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | org.apache.httpcomponents 4 | httpcore 5 | 6 | 4.4.1 7 | 8 | 4.4.1 9 | 10 | 20170324200031 11 | 12 | 13 | -------------------------------------------------------------------------------- /lib/org/apache/httpcomponents/httpmime/4.5.2/httpmime-4.5.2.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/saucelabs-training/selenium-workshop-code-examples/7ca5e23b4ebfc6c7b25f476bc06cc5023797d254/lib/org/apache/httpcomponents/httpmime/4.5.2/httpmime-4.5.2.jar -------------------------------------------------------------------------------- /lib/org/apache/httpcomponents/httpmime/maven-metadata-local.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | org.apache.httpcomponents 4 | httpmime 5 | 6 | 4.5.2 7 | 8 | 4.5.2 9 | 10 | 20170324200031 11 | 12 | 13 | -------------------------------------------------------------------------------- /lib/org/eclipse/jetty/jetty-io/9.2.20.v20161216/jetty-io-9.2.20.v20161216.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/saucelabs-training/selenium-workshop-code-examples/7ca5e23b4ebfc6c7b25f476bc06cc5023797d254/lib/org/eclipse/jetty/jetty-io/9.2.20.v20161216/jetty-io-9.2.20.v20161216.jar -------------------------------------------------------------------------------- /lib/org/eclipse/jetty/jetty-io/maven-metadata-local.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | org.eclipse.jetty 4 | jetty-io 5 | 6 | 9.2.20.v20161216 7 | 8 | 9.2.20.v20161216 9 | 10 | 20170324200031 11 | 12 | 13 | -------------------------------------------------------------------------------- /lib/org/eclipse/jetty/jetty-util/9.2.20.v20161216/jetty-util-9.2.20.v20161216.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/saucelabs-training/selenium-workshop-code-examples/7ca5e23b4ebfc6c7b25f476bc06cc5023797d254/lib/org/eclipse/jetty/jetty-util/9.2.20.v20161216/jetty-util-9.2.20.v20161216.jar -------------------------------------------------------------------------------- /lib/org/eclipse/jetty/jetty-util/maven-metadata-local.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | org.eclipse.jetty 4 | jetty-util 5 | 6 | 9.2.20.v20161216 7 | 8 | 9.2.20.v20161216 9 | 10 | 20170324200031 11 | 12 | 13 | -------------------------------------------------------------------------------- /lib/org/eclipse/jetty/websocket/websocket-api/9.2.20.v20161216/websocket-api-9.2.20.v20161216.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/saucelabs-training/selenium-workshop-code-examples/7ca5e23b4ebfc6c7b25f476bc06cc5023797d254/lib/org/eclipse/jetty/websocket/websocket-api/9.2.20.v20161216/websocket-api-9.2.20.v20161216.jar -------------------------------------------------------------------------------- /lib/org/eclipse/jetty/websocket/websocket-api/maven-metadata-local.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | org.eclipse.jetty.websocket 4 | websocket-api 5 | 6 | 9.2.20.v20161216 7 | 8 | 9.2.20.v20161216 9 | 10 | 20170324200031 11 | 12 | 13 | -------------------------------------------------------------------------------- /lib/org/eclipse/jetty/websocket/websocket-client/9.2.20.v20161216/websocket-client-9.2.20.v20161216.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/saucelabs-training/selenium-workshop-code-examples/7ca5e23b4ebfc6c7b25f476bc06cc5023797d254/lib/org/eclipse/jetty/websocket/websocket-client/9.2.20.v20161216/websocket-client-9.2.20.v20161216.jar -------------------------------------------------------------------------------- /lib/org/eclipse/jetty/websocket/websocket-client/maven-metadata-local.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | org.eclipse.jetty.websocket 4 | websocket-client 5 | 6 | 9.2.20.v20161216 7 | 8 | 9.2.20.v20161216 9 | 10 | 20170324200031 11 | 12 | 13 | -------------------------------------------------------------------------------- /lib/org/eclipse/jetty/websocket/websocket-common/9.2.20.v20161216/websocket-common-9.2.20.v20161216.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/saucelabs-training/selenium-workshop-code-examples/7ca5e23b4ebfc6c7b25f476bc06cc5023797d254/lib/org/eclipse/jetty/websocket/websocket-common/9.2.20.v20161216/websocket-common-9.2.20.v20161216.jar -------------------------------------------------------------------------------- /lib/org/eclipse/jetty/websocket/websocket-common/maven-metadata-local.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | org.eclipse.jetty.websocket 4 | websocket-common 5 | 6 | 9.2.20.v20161216 7 | 8 | 9.2.20.v20161216 9 | 10 | 20170324200031 11 | 12 | 13 | -------------------------------------------------------------------------------- /lib/org/hamcrest/hamcrest-core/1.3/hamcrest-core-1.3.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/saucelabs-training/selenium-workshop-code-examples/7ca5e23b4ebfc6c7b25f476bc06cc5023797d254/lib/org/hamcrest/hamcrest-core/1.3/hamcrest-core-1.3.jar -------------------------------------------------------------------------------- /lib/org/hamcrest/hamcrest-core/maven-metadata-local.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | org.hamcrest 4 | hamcrest-core 5 | 6 | 1.3 7 | 8 | 1.3 9 | 10 | 20170324200031 11 | 12 | 13 | -------------------------------------------------------------------------------- /lib/org/hamcrest/hamcrest-library/1.3/hamcrest-library-1.3.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/saucelabs-training/selenium-workshop-code-examples/7ca5e23b4ebfc6c7b25f476bc06cc5023797d254/lib/org/hamcrest/hamcrest-library/1.3/hamcrest-library-1.3.jar -------------------------------------------------------------------------------- /lib/org/hamcrest/hamcrest-library/maven-metadata-local.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | org.hamcrest 4 | hamcrest-library 5 | 6 | 1.3 7 | 8 | 1.3 9 | 10 | 20170324200031 11 | 12 | 13 | -------------------------------------------------------------------------------- /lib/org/json/json/20090211/json-20090211.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/saucelabs-training/selenium-workshop-code-examples/7ca5e23b4ebfc6c7b25f476bc06cc5023797d254/lib/org/json/json/20090211/json-20090211.jar -------------------------------------------------------------------------------- /lib/org/json/json/maven-metadata-local.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | org.json 4 | json 5 | 6 | 20090211 7 | 8 | 20090211 9 | 10 | 20170324200031 11 | 12 | 13 | -------------------------------------------------------------------------------- /lib/org/seleniumhq/selenium/htmlunit-driver/2.24/htmlunit-driver-2.24.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/saucelabs-training/selenium-workshop-code-examples/7ca5e23b4ebfc6c7b25f476bc06cc5023797d254/lib/org/seleniumhq/selenium/htmlunit-driver/2.24/htmlunit-driver-2.24.jar -------------------------------------------------------------------------------- /lib/org/seleniumhq/selenium/htmlunit-driver/maven-metadata-local.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | org.seleniumhq.selenium 4 | htmlunit-driver 5 | 6 | 2.24 7 | 8 | 2.24 9 | 10 | 20170324200031 11 | 12 | 13 | -------------------------------------------------------------------------------- /lib/org/seleniumhq/selenium/selenium-api/3.3.1/selenium-api-3.3.1.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/saucelabs-training/selenium-workshop-code-examples/7ca5e23b4ebfc6c7b25f476bc06cc5023797d254/lib/org/seleniumhq/selenium/selenium-api/3.3.1/selenium-api-3.3.1.jar -------------------------------------------------------------------------------- /lib/org/seleniumhq/selenium/selenium-api/maven-metadata-local.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | org.seleniumhq.selenium 4 | selenium-api 5 | 6 | 3.3.1 7 | 8 | 3.3.1 9 | 10 | 20170324200031 11 | 12 | 13 | -------------------------------------------------------------------------------- /lib/org/seleniumhq/selenium/selenium-chrome-driver/3.3.1/selenium-chrome-driver-3.3.1.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/saucelabs-training/selenium-workshop-code-examples/7ca5e23b4ebfc6c7b25f476bc06cc5023797d254/lib/org/seleniumhq/selenium/selenium-chrome-driver/3.3.1/selenium-chrome-driver-3.3.1.jar -------------------------------------------------------------------------------- /lib/org/seleniumhq/selenium/selenium-chrome-driver/maven-metadata-local.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | org.seleniumhq.selenium 4 | selenium-chrome-driver 5 | 6 | 3.3.1 7 | 8 | 3.3.1 9 | 10 | 20170324200031 11 | 12 | 13 | -------------------------------------------------------------------------------- /lib/org/seleniumhq/selenium/selenium-edge-driver/3.3.1/selenium-edge-driver-3.3.1.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/saucelabs-training/selenium-workshop-code-examples/7ca5e23b4ebfc6c7b25f476bc06cc5023797d254/lib/org/seleniumhq/selenium/selenium-edge-driver/3.3.1/selenium-edge-driver-3.3.1.jar -------------------------------------------------------------------------------- /lib/org/seleniumhq/selenium/selenium-edge-driver/maven-metadata-local.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | org.seleniumhq.selenium 4 | selenium-edge-driver 5 | 6 | 3.3.1 7 | 8 | 3.3.1 9 | 10 | 20170324200031 11 | 12 | 13 | -------------------------------------------------------------------------------- /lib/org/seleniumhq/selenium/selenium-firefox-driver/3.3.1/selenium-firefox-driver-3.3.1.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/saucelabs-training/selenium-workshop-code-examples/7ca5e23b4ebfc6c7b25f476bc06cc5023797d254/lib/org/seleniumhq/selenium/selenium-firefox-driver/3.3.1/selenium-firefox-driver-3.3.1.jar -------------------------------------------------------------------------------- /lib/org/seleniumhq/selenium/selenium-firefox-driver/maven-metadata-local.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | org.seleniumhq.selenium 4 | selenium-firefox-driver 5 | 6 | 3.3.1 7 | 8 | 3.3.1 9 | 10 | 20170324200031 11 | 12 | 13 | -------------------------------------------------------------------------------- /lib/org/seleniumhq/selenium/selenium-ie-driver/3.3.1/selenium-ie-driver-3.3.1.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/saucelabs-training/selenium-workshop-code-examples/7ca5e23b4ebfc6c7b25f476bc06cc5023797d254/lib/org/seleniumhq/selenium/selenium-ie-driver/3.3.1/selenium-ie-driver-3.3.1.jar -------------------------------------------------------------------------------- /lib/org/seleniumhq/selenium/selenium-ie-driver/maven-metadata-local.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | org.seleniumhq.selenium 4 | selenium-ie-driver 5 | 6 | 3.3.1 7 | 8 | 3.3.1 9 | 10 | 20170324200031 11 | 12 | 13 | -------------------------------------------------------------------------------- /lib/org/seleniumhq/selenium/selenium-java/3.3.1/selenium-java-3.3.1.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/saucelabs-training/selenium-workshop-code-examples/7ca5e23b4ebfc6c7b25f476bc06cc5023797d254/lib/org/seleniumhq/selenium/selenium-java/3.3.1/selenium-java-3.3.1.jar -------------------------------------------------------------------------------- /lib/org/seleniumhq/selenium/selenium-java/maven-metadata-local.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | org.seleniumhq.selenium 4 | selenium-java 5 | 6 | 3.3.1 7 | 8 | 3.3.1 9 | 10 | 20170324200031 11 | 12 | 13 | -------------------------------------------------------------------------------- /lib/org/seleniumhq/selenium/selenium-opera-driver/3.3.1/selenium-opera-driver-3.3.1.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/saucelabs-training/selenium-workshop-code-examples/7ca5e23b4ebfc6c7b25f476bc06cc5023797d254/lib/org/seleniumhq/selenium/selenium-opera-driver/3.3.1/selenium-opera-driver-3.3.1.jar -------------------------------------------------------------------------------- /lib/org/seleniumhq/selenium/selenium-opera-driver/maven-metadata-local.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | org.seleniumhq.selenium 4 | selenium-opera-driver 5 | 6 | 3.3.1 7 | 8 | 3.3.1 9 | 10 | 20170324200031 11 | 12 | 13 | -------------------------------------------------------------------------------- /lib/org/seleniumhq/selenium/selenium-remote-driver/3.3.1/selenium-remote-driver-3.3.1.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/saucelabs-training/selenium-workshop-code-examples/7ca5e23b4ebfc6c7b25f476bc06cc5023797d254/lib/org/seleniumhq/selenium/selenium-remote-driver/3.3.1/selenium-remote-driver-3.3.1.jar -------------------------------------------------------------------------------- /lib/org/seleniumhq/selenium/selenium-remote-driver/maven-metadata-local.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | org.seleniumhq.selenium 4 | selenium-remote-driver 5 | 6 | 3.3.1 7 | 8 | 3.3.1 9 | 10 | 20170324200031 11 | 12 | 13 | -------------------------------------------------------------------------------- /lib/org/seleniumhq/selenium/selenium-safari-driver/3.3.1/selenium-safari-driver-3.3.1.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/saucelabs-training/selenium-workshop-code-examples/7ca5e23b4ebfc6c7b25f476bc06cc5023797d254/lib/org/seleniumhq/selenium/selenium-safari-driver/3.3.1/selenium-safari-driver-3.3.1.jar -------------------------------------------------------------------------------- /lib/org/seleniumhq/selenium/selenium-safari-driver/maven-metadata-local.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | org.seleniumhq.selenium 4 | selenium-safari-driver 5 | 6 | 3.3.1 7 | 8 | 3.3.1 9 | 10 | 20170324200031 11 | 12 | 13 | -------------------------------------------------------------------------------- /lib/org/seleniumhq/selenium/selenium-support/3.3.1/selenium-support-3.3.1.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/saucelabs-training/selenium-workshop-code-examples/7ca5e23b4ebfc6c7b25f476bc06cc5023797d254/lib/org/seleniumhq/selenium/selenium-support/3.3.1/selenium-support-3.3.1.jar -------------------------------------------------------------------------------- /lib/org/seleniumhq/selenium/selenium-support/maven-metadata-local.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | org.seleniumhq.selenium 4 | selenium-support 5 | 6 | 3.3.1 7 | 8 | 3.3.1 9 | 10 | 20170324200031 11 | 12 | 13 | -------------------------------------------------------------------------------- /lib/org/w3c/css/sac/1.3/sac-1.3.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/saucelabs-training/selenium-workshop-code-examples/7ca5e23b4ebfc6c7b25f476bc06cc5023797d254/lib/org/w3c/css/sac/1.3/sac-1.3.jar -------------------------------------------------------------------------------- /lib/org/w3c/css/sac/maven-metadata-local.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | org.w3c.css 4 | sac 5 | 6 | 1.3 7 | 8 | 1.3 9 | 10 | 20170324200031 11 | 12 | 13 | -------------------------------------------------------------------------------- /lib/xalan/serializer/2.7.2/serializer-2.7.2.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/saucelabs-training/selenium-workshop-code-examples/7ca5e23b4ebfc6c7b25f476bc06cc5023797d254/lib/xalan/serializer/2.7.2/serializer-2.7.2.jar -------------------------------------------------------------------------------- /lib/xalan/serializer/maven-metadata-local.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | xalan 4 | serializer 5 | 6 | 2.7.2 7 | 8 | 2.7.2 9 | 10 | 20170324200031 11 | 12 | 13 | -------------------------------------------------------------------------------- /lib/xalan/xalan/2.7.2/xalan-2.7.2.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/saucelabs-training/selenium-workshop-code-examples/7ca5e23b4ebfc6c7b25f476bc06cc5023797d254/lib/xalan/xalan/2.7.2/xalan-2.7.2.jar -------------------------------------------------------------------------------- /lib/xalan/xalan/maven-metadata-local.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | xalan 4 | xalan 5 | 6 | 2.7.2 7 | 8 | 2.7.2 9 | 10 | 20170324200031 11 | 12 | 13 | -------------------------------------------------------------------------------- /lib/xerces/xercesImpl/2.11.0/xercesImpl-2.11.0.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/saucelabs-training/selenium-workshop-code-examples/7ca5e23b4ebfc6c7b25f476bc06cc5023797d254/lib/xerces/xercesImpl/2.11.0/xercesImpl-2.11.0.jar -------------------------------------------------------------------------------- /lib/xerces/xercesImpl/maven-metadata-local.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | xerces 4 | xercesImpl 5 | 6 | 2.11.0 7 | 8 | 2.11.0 9 | 10 | 20170324200031 11 | 12 | 13 | -------------------------------------------------------------------------------- /lib/xml-apis/xml-apis/1.4.01/xml-apis-1.4.01.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/saucelabs-training/selenium-workshop-code-examples/7ca5e23b4ebfc6c7b25f476bc06cc5023797d254/lib/xml-apis/xml-apis/1.4.01/xml-apis-1.4.01.jar -------------------------------------------------------------------------------- /lib/xml-apis/xml-apis/maven-metadata-local.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | xml-apis 4 | xml-apis 5 | 6 | 1.4.01 7 | 8 | 1.4.01 9 | 10 | 20170324200031 11 | 12 | 13 | --------------------------------------------------------------------------------