반응형
<참조> 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("찾는텍스트"));
반응형
'웹 크롤링, 스크래핑' 카테고리의 다른 글
파이썬, 셀레니움 HTML 파일 읽어서 분석하기 (0) | 2022.07.17 |
---|---|
파이썬, 셀레니움 google.co.kr 웹 페이지 소스 코드를 HTML 파일로 저장 (0) | 2022.07.17 |
파이썬, 셀레니움 스크롤 예제 (0) | 2022.07.17 |
파이썬, 셀레니움 XHR 데이터 확인 예제 (0) | 2022.07.17 |
파이썬, 셀레니움 shadow dom 처리 예제(크롬 사용 기록 삭제) (0) | 2022.07.17 |