요새 제가 가장 재미있게 가지고 노는 것은 Steam ChatGPT 입니다.
정말 이것저것 해보다보면 시간이 훅훅 지나가네요. AI계의 문명 같은 녀석이네요.
재미있게 이것저것 해보던도중에 문득 NoSuchElementException을 ChatGPT로 해결할 수 있을까? 라는 생각이 들었습니다.
그래서 바로 진행해보았습니다.
from appium import webdriver
from difflib import SequenceMatcher
# Appium 서버 연결 정보 설정
desired_caps = {
"platformName": "Android",
"deviceName": "emulator-5554",
"appPackage": "com.example.package",
"appActivity": "com.example.package.MainActivity",
}
# Appium 드라이버 실행
driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)
# 버튼 요소 찾기
button_element = driver.find_element_by_android_uiautomator('new UiSelector().text("확인")')
# 버튼 텍스트 가져오기
button_text = button_element.text
# 버튼 텍스트가 '확인'과 일치하는지 확인
if button_text == '확인':
print('버튼 텍스트가 일치합니다.')
else:
# 유사한 텍스트를 찾기 위한 기준값 설정
similarity_threshold = 0.8
# 버튼 요소 주변 요소 찾기
sibling_elements = button_element.find_elements_by_xpath('following-sibling::* | preceding-sibling::*')
# 주변 요소에서 유사한 텍스트 찾기
similar_text = None
for sibling_element in sibling_elements:
sibling_text = sibling_element.text
if SequenceMatcher(None, button_text, sibling_text).ratio() > similarity_threshold:
similar_text = sibling_text
break
if similar_text:
print(f"주변 요소에서 '{similar_text}' 텍스트를 찾았습니다.")
else:
print("주변 요소에서 유사한 텍스트를 찾을 수 없습니다.")
# Appium 드라이버 종료
driver.quit()
코드는 보기 편하기 위해 직접 붙여넣었습니다.
SequenceMatcher 라는 것은 처음 알게 되었습니다. 저런 함수도 있군요! 역시 무릎을 탁 치며 감탄해 하고 있었는데
코드를 자세히보니 구버전 Appium 코드였습니다.
현재는 find_element_by_xpath를 예로 들면 _by_xpath 까지는 사용하지 않습니다. (1.22.x 버전 기준)
find_element(AppiumBy.XPATH) 지금은 이렇게 사용되고 있죠.
구버전이라도 코드는 바꾸면 되니 코드를 더 보았습니다~ 음... 그런데 처음부터 이해가 가지 않더군요.
위의 코드는 '확인' 이라는 텍스트가 있는 버튼을 못찾으면 바로 NoSuchElementException 이 발생하면서 종료될것입니다.
아니 왜 이렇게 코드를 짠거야! 라고 봤더니 제가 프롬프트를 그렇게 썼네요...
Regenerating Response를 몇번 더 해보았는데 코드는 유사했습니다.
NoSuchElementException 예외처리를 하더라도 기준되는 element가 있어야 하는데 이걸 못찾으면 코드는 더이상 진행되지 않을 것으로 보였습니다.
뭔가 될듯말듯한 상황이라 이건 나중에 프롬프트를 좀 더 자세하게 작성해서 가지고 놀아봐야겠습니다. :)
아 이렇게 네이버 블로그 처럼 제목에 대한 결과가 본문에 없는 포스팅으로 끝낼 수는 없습니다.
결과는 '이번에는 실패' 입니다. 다만 가능성은 보았네요. 여러분들도 같이 찾아보시죠~!
'Automation' 카테고리의 다른 글
Appium doctor 실행 시 발생하는 android could NOT be found in /Users/{user_name}/Library/Android/sdk! 해결법 (0) | 2023.06.29 |
---|---|
Appium Desktop 지원 중단. 보안 오류 발견 (0) | 2023.05.10 |
AppiumService() 가 실행되지 않을 때 해결법 (0) | 2023.04.21 |
Appium Service가 실행되지 않을 경우 (0) | 2023.01.12 |
Katalon, AWS에서 종단 간 테스트 자동화 솔루션 제공 (Katalon Delivers an End-to-End Test Automation Solution on AWS) (0) | 2022.12.11 |
댓글