2017-12-21 31 views
1

웹 응용 프로그램과 상호 작용할 프로그램을 작성하려고합니다.웹 응용 프로그램에서 Python Selenium click() 메서드

from selenium import webdriver 
from selenium.webdriver.support.ui import WebDriverWait 
from selenium.webdriver.support import expected_conditions as EC 
from selenium.webdriver.common.by import By 

browser = webdriver.Firefox() 
browser.get('https://www.easports.com/fifa/ultimate-team/web-app/') 

element = WebDriverWait(browser, 20).until(EC.presence_of_element_located(\ 
    (By.ID, 'Login'))) 
element.click() 

print("Found %s" % element) 
print("locatione %s" % element.location) 

브라우저가 열려 있어야 페이지가로드 될 때까지 기다린 다음 "로그인"버튼을 클릭해야합니다. "로그인"버튼이 있지만 클릭하지는 않습니다. 위치가 분명히 잘못된 좌표를 인쇄하고 있습니다. 이 문제의 가능한 원인과 해결책은 무엇입니까?

+0

로그인 html 코드를 표시 할 수 있습니까? –

+0

요소가 숨겨진 경우이 상황이 발생할 수 있습니다. 요소가 보이면 자바 스크립트를 사용하여 'driver.execute_script (arguments [0] .scrollIntoView(); "요소)를 사용하여 요소를 페이지의 가운데로 이동시킬 수 있습니다." –

+0

" 분명히 잘못된 좌표를 인쇄하고 있습니다. "ScrollIntoView를 더 잘 사용합니다. –

답변

0

다른 로직으로 버튼을 찾으십시오.

WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//button[@class='standard call-to-action']"))).click() 
0

클릭 당신이 다음 코드 줄을 사용할 수있는 Login 버튼 find 사람 및 : 예를 들어, 클래스를 통해 "버튼을 누릅니다.

그것에 대해 다음 코드를 사용하여

element = WebDriverWait(browser, 10).until(EC.element_to_be_clickable((By.CSS_SELECTOR, ".standard.call-to-action"))) 
browser.execute_script("arguments[0].scrollIntoView();", element) 
element.click() 

는 희망이 당신을 도와줍니다!

0

당신은 당신의 "로그인에 대한 잘못된 로케이터를 사용하고 있습니다 :

element = browser.find_element_by_class_name('call-to-action') 
element.click()