반응형

<참조> http://daplus.net/python-selenium-webdriver-python

파이썬, 셀레니움 '텍스트'로 요소 찾기 

 

글. 수알치 오상문

 

순수한 텍스트를 기준으로 요소를 찾아가고 싶을 때가 있다.

예를 들어, 텍스트 'My Button'을 가진 요소를 찾아보자.

el = driver.find_elements_by_xpath("//*[contains(text(), 'My Button')]")

그러나 다음처럼 특정 태그와 결합하여 찾는 것이 좋은 방법이다.

driver.find_element_by_xpath("//div[contains(text(),'My button')]")
driver.find_element_by_xpath("//button[contains(text(),'My button')]")

 

위 방식들은 대소문자를 구분한다. 대소문자 구분 없이 찾고 싶다면 아래 방법을 시도해보자. 이러면 'mY byttoN' 같은 텍스트도 찾을 수 있다.

driver.find_elements_by_xpath("//*[contains(translate(text(), 'ABCDEFGHIJKLMNOPQRSTUVWXYZЙ', 'abcdefghijklmnopqrstuvwxyzй'), 'my button')]")

 

텍스트가 앞 뒤에 공백이 있다면 검색이 곤란할 수 있다. 이런 경우에는 다음처럼 앞 뒤 공백은 무시하도록 하자.

driver.find_element_by_xpath("//div[normalize-space()='My Button']]")

 

혹시 변수명을 찾고자 한다면 다음처럼 처리한다.

foo= "foo_bar"  
# foo 변수를 가진 요소를 찾으려면
my_element = driver.find_element_by_xpath("//div[.='" + foo + "']")

 

[참고]  자바 

wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//*[contains(text(), '찾는텍스트')]")));
    assertNotNull(driver.findElement(By.xpath("//*[contains(text(), '찾는텍스트')]")));
    String yourButtonName=driver.findElement(By.xpath("//*[contains(text(), '찾는텍스트')]")).getAttribute("innerText");
    assertTrue(yourButtonName.equalsIgnoreCase("찾는텍스트"));

 

반응형

+ Recent posts