Q. 파이썬 프로그래밍 중 질문입니다.

이슬세병 2019. 07. 11. 조회수 231


from selenium import webdriver

from selenium.common.exceptions import NoSuchElementException,StaleElementReferenceException

driver = webdriver.Chrome('/Users/GSEC/Downloads/chromedriver')

driver.get('https://kr.ssss.online/member/window_login.asp')

delay = 3 #리소스 기다리는 시간

delay2 = 5

driver.implicitly_wait(delay)

id1 = 'aa@gmail.com'

id2 = 'bb@gmail.com'

pw = 'xxxx'

driver.findelementbyname('farmemail').send_keys(id1)

driver.findelementbyname('farmpwd').send_keys(pw)

driver.implicitly_wait(delay2)

driver.findelementbyxpath('//*[@id="btnlogin"]/input').click()

alert = driver.switch_to.alert

alert.accept()

#html = driver.page_source

#soup = BeautifulSoup(html, 'html.parser')

driver.get('https://kr.ssss.online/event/')

#로그아웃 버튼 클릭from selenium import webdriver

from selenium.common.exceptions import NoSuchElementException,StaleElementReferenceException

driver = webdriver.Chrome('/Users/GSEC/Downloads/chromedriver')

driver.get('https://kr.ssss.online/member/window_login.asp')

delay = 3 #리소스 기다리는 시간

delay2 = 5

driver.implicitly_wait(delay)

id1 = 'aa@gmail.com'

id2 = 'bb@gmail.com'

pw = 'xxxx'

driver.findelementbyname('farmemail').send_keys(id1)

driver.findelementbyname('farmpwd').send_keys(pw)

driver.implicitly_wait(delay2)

driver.findelementbyxpath('//*[@id="btnlogin"]/input').click()

alert = driver.switch_to.alert

alert.accept()

driver.get('https://kr.ssss.online/event/')

driver.implicitly_wait(delay2)

driver.findelementbyxpath('//*[@id="plybtn"]/input').click()

driver.quit()

로그인 한 후 이벤트를 위한 버튼을 클릭하는 프로그램을 짰는데 도저히 그 버튼이 클릭이 안됩니다.

실행하면 개체를 찾을 수 없다고 나옵니다.

타입은 button이며, class나 id, xpath 셋다 해봐도 안됩니다.

<input type="button" value=" 돌림판 돌리기 " class="btnroll" onclick="fnroll_event();">

어떻게 하면 가능할까요?

공유하고 보상받기 ♥︎
댓글 0

1개의 답변이 있습니다.

큐레이터 채택
기본 아바타 프알못 답변자인증
익스트림 QA팀 7/11/2019 100%의 채택
<input type="button" value=" 돌림판 돌리기 " class="btn_roll" onclick="fn_roll_event();">

이 버튼을 누르려는데 Selenium으로 개체를 찾을 수 없다면 자바스크립트를 실행해도 되고

driver.execute_script("document.querySelector('셀렉터').click()")

아예 onclick 이벤트(위 버튼의 경우에는 fn_roll_event())를 실행시키는 게 목적이므로

driver.execute_script("fn_roll_event()")

이렇게만 해도 됩니다.

댓글 1
이슬세병 2019.07.11 11:46

방금 해보았는데 알려주신대로

driver.execute_script("fn_roll_event()")

해보았는ㅠㅠ

selenium.common.exceptions.JavascriptException: Message: javascript error: fn_roll_event is not defined

이런 오류가 발생합니다.