Selenium을 할 때는 반드시 항상 실행하는 브라우저의 드라이버 버전관리를 해주면서, 바이너리 파일을 항상 실행가능한 위치에 다운받아야합니다.
대부분의 웹브라우저는, 설정을 무효화하지 않는이상 항상 최신상태로 유지되는데요,
이때 실행하고자 하는 바이너리 파일이 지원하는 드라이버 버전과, 실행하고자하는 웹브라우저의 버전이 맞지 않으면 실행이 실패가 됩니다.
Selenium의 기능은 아니지만, 이용하면 유용할만한 라이브러리를 소개합니다.
https://bonigarcia.dev/webdrivermanager/
WebDriverManager
는 오픈소스로, 코드를 실행하는 서버 혹은 로컬 서버의 브라우저를 지원하는 드라이버파일을 관리해줍니다.
Maven
<dependency>
<groupId>io.github.bonigarcia</groupId>
<artifactId>webdrivermanager</artifactId>
<version>5.0.3</version>
<scope>test</scope>
</dependency>
Gradle
dependencies {
testImplementation("io.github.bonigarcia:webdrivermanager:5.0.3")
}
사용 방법은 매우 간단합니다.
import static org.assertj.core.api.Assertions.assertThat;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import io.github.bonigarcia.wdm.WebDriverManager;
class ChromeTest {
WebDriver driver;
@BeforeAll
static void setupClass() {
WebDriverManager.chromedriver().setup();
}
@BeforeEach
void setupTest() {
driver = new ChromeDriver();
}
@AfterEach
void teardown() {
driver.quit();
}
@Test
void test() {
// Exercise
driver.get("https://bonigarcia.dev/selenium-webdriver-java/");
String title = driver.getTitle();
// Verify
assertThat(title).contains("Selenium WebDriver");
}
}
WebDriverManager.chromedriver().setup();
이것으로 설정이 가능합니다.
https://pypi.org/project/webdriver-manager/
파이썬에서도 비슷한 라이브러리가 존재합니다.
pip install webdriver-manager
일단 설치를 하고,
from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager
driver = webdriver.Chrome(ChromeDriverManager().install())
사용법이 매우 간단합니다.