2016-07-03 3 views
1

다음 페이지로 이동할 때 로그인이 필요한 트위터 (api의 그냥 연습하는 셀레늄을 사용하지 않음)에 셀레늄을 사용하고 있습니다. 다음 코드를 사용하여 로그인 입력 필드를 찾은 다음 사용자 이름 및 암호 문자열 :Python 셀레늄 send_keys가 작동하지 않습니다.

from selenium import webdriver 
from selenium.webdriver.common.keys import Keys 
driver = webdriver.Chrome(executable_path="Chrome") 
driver.get("https://twitter.com/login") 
username = driver.find_element_by_xpath("//*[@id='page-container']/div/div[1]/form/fieldset/div[1]/input") 
username.send_keys("username") 
password = driver.find_element_by_xpath("//*[@id='page-container']/div/div[1]/form/fieldset/div[2]/input") 
password.send_keys("password") 
password.send_keys(Keys.ENTER) 

driver.get("http://twitter.com/user/following") 
driver.execute_script("window.scrollTo(0, document.body.scrollHeight);") 
코드가 두 번째 필드 (암호 필드)는 암호 문자열을 보내고 다음 줄 (Keys.ENTER)로 건너 뛰고 옆이 이동하지 않았다 제외하고있다

다음 페이지는 로그인이 필요하지만, 커서는 암호 필드에 있으므로 이미 스크립트를 실행할 때 오류 메시지 나 오류 코드가없는 이상한 위치에 있습니다.

이 문제의 원인은 무엇입니까 ??

파이썬 2.7.6 셀레늄 버전 미리

에서 우분투

고맙습니다 14.04에 2.53.6

답변

1

를 사용하는 대신 Enter 키를 전송하고, 단지 버튼의 로그인을 클릭합니다. 또한 XPath는 다소 부서지기 쉽습니다. 좀 더 구체적인 것을 사용하거나 아래의 CSS 선택기를 사용할 수 있습니다.

driver.find_element_by_css_selector("#page-container input.email-input").send_keys(username); 
driver.find_element_by_css_selector("#page-container input.js-password-field").send_keys(password); 
driver.find_element_by_css_selector("button.submit").click(); 
관련 문제