自动登录

时间:2017-04-21 17:33:21

标签: python selenium selenium-webdriver

我正在尝试运行python selenium并自动执行登录过程。

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

currentDate = ("{:%Y%m%d}".format(datetime.now()))
usernameStr = 'email'
passwordStr = 'passoword'

browser = webdriver.Chrome()
browser.get('http://website.com/en/entry?' + 'date=' + currentDate)
delay = 3


loginButton = browser.find_element_by_xpath('//*[@id="global-header"]/div[2]/ul/li[2]/a')
loginButton.click()
delay = 3 
Username = browser.find_element_by_name('Username or Email Address')
Username.send_keys(usernameStr)
password = browser.find_element_by_name('password')
password.send_keys(passwordStr)
nextButton = browser.find_element_by_class_name('vm.submitLogin()')
nextButton.click()

这是我正在尝试访问的HTML

<span class="input-wrapper">
<input type="email" placeholder="Username or Email Address" 
autocapitalize="none" autocomplete="on" autocorrect="off" spellcheck="false" 
ng-model="vm.username" ng-pattern="/^[^<&quot;>]*$/" 
ng-required="true" did-disable-validate="
"ng-focus="vm.resetUsername()" 
class="ng-pristine ng-invalid ng-invalid-required ng-valid-pattern 
ng-touched" tabindex="0" 
required="required" aria-required="true" aria-invalid="true"></span>

我试图通过名称,css选择器,xpath访问html,但似乎没有任何工作。这是一个登录横幅,而不是标准的html页面,所以如果这有所不同,那就是idk。

哦,你这里有错误

Traceback (most recent call last):
  File "/Users/aj/Desktop/streakscraper/login.py", line 20, in <module>
    Username = browser.find_element_by_name('Username or Email Address')
  File "/usr/local/lib/python3.6/site-packages/selenium/webdriver/remote/webdriver.py", line 378, in find_element_by_name
    return self.find_element(by=By.NAME, value=name)
  File "/usr/local/lib/python3.6/site-packages/selenium/webdriver/remote/webdriver.py", line 784, in find_element
    'value': value})['value']
  File "/usr/local/lib/python3.6/site-packages/selenium/webdriver/remote/webdriver.py", line 249, in execute
    self.error_handler.check_response(response)
  File "/usr/local/lib/python3.6/site-packages/selenium/webdriver/remote/errorhandler.py", line 193, in check_response
    raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {"method":"name","selector":"Username or Email Address"}
  (Session info: chrome=57.0.2987.133)
  (Driver info: chromedriver=2.29.461585 (0be2cd95f834e9ee7c46bcc7cf405b483f5ae83b),platform=Mac OS X 10.12.4 x86_64)

1 个答案:

答案 0 :(得分:1)

您应该切换到正确的iframe,然后尝试匹配html

要更改为其他iframe用途:

driver.switch_to.frame(driver.find_element_by_name("iframe_name"))

或简单地说:

driver.switch_to.frame("iframe_name")

您也可以通过索引访问它:

driver.switch_to.frame(0) # 1, 2, etc.. if you have multiple iframes

要切换回主要内容,请使用:

driver.switch_to.default_content()
相关问题