2017-11-17 8 views
0

로그인 정보를 자동 제출하고 페이지에 로그인하려고합니다.Submit/log in Selenium + Python

내 코드는 지금까지 있습니다 :

from selenium import webdriver 
import selenium 
from selenium.webdriver.common.by import By 
driver = webdriver.Chrome("PathOfChromeDriver") 


driver.get("URL") 

username = driver.find_element_by_name("UserName") 
password = driver.find_element_by_name("Password") 

username.send_keys("My_Username") 
password.send_keys("My_Password") 

위의 코드 조각은 잘 작동합니다. 문제 제출되고/눌러 로그인 :

driver.find_element_by_name("submit").click() 

소스 코드 : 나는 같은 위의이 포럼에서 찾을 수 있습니다 생각할 수있는 모든 변화를 시도

driver.find_element_by_xpath("Sign in").click() 

문제의 웹 사이트 요소는 다음과 같습니다.

<form action="/Account/SignIn?returnUrl=%252fProducts" method="post" id="page-root" class="signin-page local-new-style" autocomplete="off"> 

<div class="login"> 
    <img alt="logo" src="/Content/images/bg_login_logo.png" /> 
    <div class="inner_content "> 
     <div class="content"> 

      <h1>Access your account</h1> 
      <div> 
       <input type="text" name="UserName" placeholder="Login" /> 

      </div> 
      <div> 
       <input type="password" name="Password" placeholder="Password" /> 

      </div> 

      <div> 
       <label> 
        <input type="checkbox" name="RememberMe" value="True" /> 
        Remember my login on this computer 
       </label> 
      </div> 
      <div> 
       <button type="submit">Sign in</button> 
      </div> 
     </div> 
    </div> 
</div> 

</form> 

난 그저 작동하지 않습니다. 일반적으로 "ZZZ 표현식 YYY가있는 요소를 찾을 수 없습니다"유형의 오류가 발생합니다.

모든 의견을 듣고 해결책을 가진 사람은 영웅보다 짧지 않습니다!

답변

0

이 시도 :

이도해야 ​​
driver.find_element_by_css_selector("form[id='page-root'] button").click() 

작업 :

driver.find_element_by_id("page-root").submit() 
+0

예! 그것은 작동합니다! 그래서 나는 내 시도가 실패한 이유는 그것이 "나무의 궁극적 인 부모"를 되돌아 볼 필요가 있기 때문이라고 생각한다. 감사합니다. – WayOutofDepth

+0

도와 드리겠습니다. '제출'이라는 이름을 찾고 있었지만 제출은 제출 버튼의 유형입니다. 유효하지 않은 xpath이기 때문에 '로그인'에 대한 xpath 검색도 작동하지 않았습니다. 실제로 궁극적 인 부모에게 다시 의뢰 할 수는 있지만 반드시 필요한 것은 아닙니다. 나는 보통 ID가있는 항목 (고유 한 항목)을 검색하고 거기에서부터 이동합니다. 다음 링크에서는 CSS 선택기에 대해 좀 더 자세히 설명합니다. https://saucelabs.com/resources/articles/selenium-tips-css-selectors – Marcel

0

당신은 다음에 시도 할 수 있습니다 :

driver.find_element_by_css_selector(".content>div>button").click()