Selenium에서 id 속성의 지정되지 않은 요소를 가져옵니다.

하고 싶은 일



Selenium WebDriver를 사용하여 화면의 요소를 지정할 때 id 속성이 지정되지 않은 경우 어떻게 요소를 검색합니까? 라는 이야기입니다. Chrome에서 Yahoo의 검색 키워드에 임의의 단어를 지정하고 검색 버튼을 누르는 것을 예로 들어 보겠습니다.


우선, 검색 키워드를 입력하는 텍스트 박스에는 name 속성(name="p")이 지정되어 있으므로, 이하와 같이 그것을 이용합니다.


검색 키워드가 유리안 리트리버인 것은, YouTube에서 유리안 리트리버의 동영상을 보면서 본 기사를 쓰고 있으므로 왠지 그렇게 하고 있습니다.

SampleScript.java
webDriver.findElement(By.name("p")).sendKeys("ゆりあんレトリバー");

검색 버튼에는 id 및 name 속성이 지정되지 않았습니다.


이 경우 XPath 을 사용할 수 있습니다. XPath는 Chrome의 개발자 도구에서 확인하고 복사할 수 있습니다.

코드는 다음과 같습니다.

SampleScript.java
webDriver.findElement(By.xpath("//*[@id=\"ContentWrapper\"]/header/section[1]/div/form/fieldset/span/button/span/span")).click();

요약



소스는 이런 느낌입니다.

SampleScript.java
public class SampleScript {

    public static void main(String[] args) {
        System.setProperty("webdriver.chrome.driver", "C:\\Development\\selenium\\chromedriver.exe");
        WebDriver webDriver = new ChromeDriver();
        webDriver.get("https://www.yahoo.co.jp/");
        webDriver.findElement(By.name("p")).sendKeys("ゆりあんレトリバー");
        webDriver.findElement(By.xpath("//*[@id=\"ContentWrapper\"]/header/section[1]/div/form/fieldset/span/button/span/span")).click();
    }
}

실제로 움직여 보면 다음과 같이 됩니다.


덧붙여서, 위에서는 굳이 마지막으로 브라우저를 닫고 있지 않습니다만, webDriver.quit();로 하는 것, 브라우저를 닫을 수가 있습니다.
quit 메서드를 호출하면 WebDriver 인스턴스에서 생성된 모든 브라우저가 닫히고 해당 브라우저의 Driver 프로세스도 종료됩니다. 반대로 말하면, quit 메소드를 호출하지 않으면 그 프로세스도 남은 채로 되어 버리므로 주의가 필요합니다.

좋은 웹페이지 즐겨찾기