Created
August 4, 2017 07:52
-
-
Save keehyun2/d53d8139a476abc7768a6885c62e41b5 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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(); | |
} | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?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