00214 20160226 셀레니움 WebDriver 시작하기 1 파이어폭스 - AngryQA/blog GitHub Wiki
셀레니움 WebDriver 시작하기 1 - 파이어폭스
AngryQA | 2016-02-26 금요일 오전 11:15 | 테스트 도구/Selenium / 웹 테스트 자동화 | 원본
작성자 : 빈스윤
셀레니움을 놓은지 조금 시간이 되서 처음부터 다시 진행해보려 합니다.
근데 티스토리는 이미지 복붙이 안되네....
글로만 진행하도록 하겠습니다.
1. 먼저 자바를 깐다
2. 자바랑 이클립스를 깐다.
3. WebDrive 설치를 어찌 했었나 찾아보다가 발견 쭈욱 따라가는 보면 될것같다. 그리고 이동영상그룹도 구독하는게 좋을듯.
4. 자바 프로젝트 생성하고 소스를 작성할 클래스도 생성한다.
5. 셀리니움 페이지에서 다운 받아둔 웹드라이브 jar 파일을 프로젝트에 추가한다.
http://docs.seleniumhq.org/download/
6. 하단은 파이어폭스에서 두사이트에 접근해 특정링크를 클릭하는 작성한 예제
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
package test;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.firefox.FirefoxDriver;
public class webTest {
public static void main(String[] args) throws InterruptedException {
WebDriver FFdriver = new FirefoxDriver();
//확실한 링크텍스트라면 이렇게 클릭 할 수 있다. 하지만 간단한 외국사이트만 가능하다.
FFdriver.get("http://stackoverflow.com/");
Thread.sleep(3000);
WebElement link;
link = FFdriver.findElement(By.linkText("Jobs"));
link.click();
Thread.sleep(5000);
//우리나라 사이트나 복잡한 사이트의 경우 객체의 아이디나 타입을 알기 어려우므로 Xpath를 사용한다. Xpath은 파이어폭스에 FireBug를 이용하면 편하다.
WebElement playerInfo;
FFdriver.get("http://www.statiz.co.kr/");
Thread.sleep(3000);
playerInfo = FFdriver.findElement(By.xpath("/html/body/div[1]/div[2]/div/a[3]/div"));
playerInfo.click();
Thread.sleep(5000);
FFdriver.quit();
}
}
| cs |
7. 검색도 어렵지 않다.
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
|
package test;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.firefox.FirefoxDriver;
public class webTest {
public static void main(String[] args) throws InterruptedException {
WebDriver FFdriver = new FirefoxDriver();
//확실한 링크텍스트라면 이렇게 클릭 할 수 있다. 하지만 간단한 외국사이트만 가능하다.
FFdriver.get("http://stackoverflow.com/");
Thread.sleep(3000);
WebElement link;
link = FFdriver.findElement(By.linkText("Jobs"));
link.click();
Thread.sleep(5000);
//우리나라 사이트나 복잡한 사이트의 경우 객체의 아이디나 타입을 알기 어려우므로 Xpath를 사용한다. Xpath은 파이어폭스에 FireBug를 이용하면 편하다.
WebElement playerInfo;
FFdriver.get("http://www.statiz.co.kr/");
Thread.sleep(3000);
playerInfo = FFdriver.findElement(By.xpath("/html/body/div[1]/div[2]/div/a[3]/div"));
playerInfo.click();
Thread.sleep(5000);
WebElement playerSerchInput;
playerSerchInput = FFdriver.findElement(By.xpath("/html/body/div[1]/div[6]/div[1]/div[1]/div[3]/form/input[3]"));
playerSerchInput.click();
playerSerchInput.sendKeys("박용택");
playerSerchInput.submit();
Thread.sleep(5000);
FFdriver.quit();
}
}
| cs |
7. 파이어폭스는 됬고.. 크롬을 하려고 크롬 드라이버를 선언하고 동일한 코드방식으로 코드를 작성하고.. 실행해 보았더니 에러가 난다.
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
WebDriver Chrdriver = new ChromeDriver();
//Chrome 크롬
Chrdriver.get("http://stackoverflow.com/");
Thread.sleep(3000);
link = Chrdriver.findElement(By.linkText("Jobs"));
link.click();
Thread.sleep(5000);
Chrdriver.get("http://www.statiz.co.kr/");
Thread.sleep(3000);
playerInfo = Chrdriver.findElement(By.xpath("/html/body/div[1]/div[2]/div/a[3]/div"));
playerInfo.click();
Thread.sleep(5000);
playerSerchInput = Chrdriver.findElement(By.xpath("/html/body/div[1]/div[6]/div[1]/div[1]/div[3]/form/input[3]"));
playerSerchInput.click();
playerSerchInput.sendKeys("박용택");
playerSerchInput.submit();
Thread.sleep(5000);
Chrdriver.quit();
}
| cs |
|
1
2
3
4
5
6
7
8
9
10
|
Exception in thread "main" java.lang.IllegalStateException: The path to the driver executable must be set
by the webdriver.chrome.driver system property; for more information,
see https://github.com/SeleniumHQ/selenium/wiki/ChromeDriver.
The latest version can be downloaded from http://chromedriver.storage.googleapis.com/index.html
at com.google.common.base.Preconditions.checkState(Preconditions.java:199)
at org.openqa.selenium.remote.service.DriverService.findExecutable(DriverService.java:109)
at org.openqa.selenium.chrome.ChromeDriverService.access$0(ChromeDriverService.java:1)
at org.openqa.selenium.chrome.ChromeDriverService$Builder.findDefaultExecutable(ChromeDriverService.java:137)
at org.openqa.selenium.remote.service.DriverService$Builder.build(DriverService.java:296)
at org.openqa.selenium.chrome.ChromeDriverService.createDefaultService(ChromeDriverService.java:88)
at org.openqa.selenium.chrome.ChromeDriver.(ChromeDriver.java:116)
at test.webTest.main(webTest.java:12)
| cs |
가르쳐준 URL로 가보니 12.0.712 버전 이후에서는 크롬드라이브를 따로 받아야 한다고 한다. (http://chromedriver.storage.googleapis.com/index.html)
이전 버전이라면 셀레니움에 이미 포함된 크롬 드라이브를 사용하면 되겠다.
Testing earlier versions of Chrome
ChromeDriver is only compatible with Chrome version 12.0.712.0 or newer. If you need to test an older version of Chrome, use Selenium RC and a Selenium-backed WebDriver instance:
URL seleniumServerUrl = new URL("http://localhost:4444");
URL serverUnderTest = new URL("http://www.google.com");
CommandExecutor executor = new SeleneseCommandExecutor(seleniumServerUrl, serverUnderTest, DesiredCapabilities.chrome());
WebDriver driver = new RemoteWebDriver(executor);
8. 다운받아서 압축을 풀어보니 IE 테스트할때 고생했었던 exe파일로 되어있다.
chromedriver.exe
이런!
파이어폭스와 크롬,IE에 드라이브 선언방법이 다르므로 다음 포스팅에서 크롬과 IE에서 환경 세팅 및 테스트코드를 실행해보도록 하겠다.