Skip to content

Instantly share code, notes, and snippets.

@keehyun2
Created August 4, 2017 07:52
Show Gist options
  • Save keehyun2/d53d8139a476abc7768a6885c62e41b5 to your computer and use it in GitHub Desktop.
Save keehyun2/d53d8139a476abc7768a6885c62e41b5 to your computer and use it in GitHub Desktop.
package kr.co.cyberline.grid;
import org.openqa.selenium.*;
import org.openqa.selenium.ie.InternetExplorerDriver;
import org.openqa.selenium.remote.RemoteWebDriver;
import org.openqa.selenium.remote.BrowserType;
import org.openqa.selenium.remote.DesiredCapabilities;
import org.testng.annotations.AfterTest;
import org.testng.annotations.BeforeTest;
import org.testng.annotations.Parameters;
import org.testng.annotations.Test;
import java.net.URL;
import java.util.concurrent.TimeUnit;
import java.net.MalformedURLException;
public class GridNGTest {
public WebDriver driver;
public String URL, Node;
protected ThreadLocal<RemoteWebDriver> threadDriver = null;
@Parameters("browser")
@BeforeTest
public void launchapp(String browser) throws MalformedURLException {
String URL = "https://khphub.com/";
if (browser.equalsIgnoreCase("firefox")) {
System.out.println(" Executing on FireFox");
String Node = "http://localhost:5555/wd/hub";
DesiredCapabilities cap = DesiredCapabilities.firefox(); // 중요
cap.setBrowserName("firefox");
driver = new RemoteWebDriver(new URL(Node), cap);
// Puts an Implicit wait, Will wait for 10 seconds before throwing
// exception
driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
// Launch website
driver.navigate().to(URL);
// driver.manage().window().maximize();
} else if (browser.equalsIgnoreCase("chrome")) {
System.out.println(" Executing on CHROME");
DesiredCapabilities cap = DesiredCapabilities.chrome(); // 중요
cap.setBrowserName("chrome");
String Node = "http://localhost:5557/wd/hub";
driver = new RemoteWebDriver(new URL(Node), cap);
driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
// Launch website
driver.navigate().to(URL);
// driver.manage().window().maximize();
} else if (browser.equalsIgnoreCase("ie")) {
System.out.println(" Executing on IE");
DesiredCapabilities cap = DesiredCapabilities.internetExplorer(); // 중요
cap.setBrowserName(BrowserType.IE);
cap.setCapability(InternetExplorerDriver.INTRODUCE_FLAKINESS_BY_IGNORING_SECURITY_DOMAINS, true);
cap.setCapability("requireWindowFocus", true);
cap.setPlatform(Platform.WIN10);
String Node = "http://localhost:5558/wd/hub";
driver = new RemoteWebDriver(new URL(Node), cap);
driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
// Launch website
driver.navigate().to(URL);
// driver.manage().window().maximize();
}else if (browser.equalsIgnoreCase("edge")) {
System.out.println(" Executing on Edge");
DesiredCapabilities cap = DesiredCapabilities.edge(); // 중요
cap.setBrowserName(BrowserType.EDGE);
String Node = "http://localhost:5559/wd/hub";
driver = new RemoteWebDriver(new URL(Node), cap);
driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
//driver.manage().window().maximize();
}else {
throw new IllegalArgumentException("The Browser Type is Undefined");
}
}
@Test
public void searchTest() throws InterruptedException {
driver.findElement(By.id("sch_stx")).sendKeys("리눅스");
click(By.id("sch_submit"), driver);
click(By.linkText("리눅스 vi 편집기 팁"), driver);
}
public static void click(By by, WebDriver driver) throws InterruptedException {
click(by, driver, 10);
}
public static void click(By by, WebDriver driver, int tryCount) throws InterruptedException {
try {
driver.findElement(by).click();
} catch (Exception e) {
if (tryCount == 0) {
e.printStackTrace();
return;
}
synchronized (driver) {
driver.wait(1000);
}
click(by, driver, tryCount - 1);
}
}
public static void click(WebElement we, WebDriver driver) throws InterruptedException {
try {
we.click();
} catch (Exception e) {
synchronized (driver) {
driver.wait(1000);
}
click(we, driver);
}
}
@AfterTest
public void closeBrowser() {
// driver.quit();
}
}
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="Suite" parallel="tests">
<test name="IETest">
<parameter name="browser" value="ie" />
<classes>
<class name="kr.co.cyberline.grid.GridNGTest" />
</classes>
</test>
<test name="ChromeTest">
<parameter name="browser" value="chrome" />
<classes>
<class name="kr.co.cyberline.grid.GridNGTest" />
</classes>
</test>
<test name="FirefoxTest">
<parameter name="browser" value="firefox" />
<classes>
<class name="kr.co.cyberline.grid.GridNGTest" />
</classes>
</test>
<test name="EdgeTest">
<parameter name="browser" value="edge" />
<classes>
<class name="kr.co.cyberline.grid.GridNGTest" />
</classes>
</test>
</suite>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment