python和selenium实现outlook.com登录脚本
ringa_lee
ringa_lee 2017-04-18 10:11:27
0
2
623
ringa_lee
ringa_lee

ringa_lee

모든 응답(2)
阿神

输入密码之所以不行,是因为密码input一开始是隐藏的,就算你跳转了,页面上可见了,但是browser = webdriver.Chrome()的browser里的page_source中密码框还是不可见的。所以你需要分析页面元素,看看密码框的class前后值。所以需要执行一段JS脚本让密码框可见。browser.execute_script("document.getElementById('i0118').setAttribute('class', 'form-control')")我修改了下你的代码,你可以参考下。此外也需要对登录按钮进行处理。因为一开始登录按钮的值是"下一步"且是disabled。碰到这类问题一定要去看页面,具体分析。 具体看代码

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

browser = webdriver.Chrome()
# logout for 1st step
#browser.get('https://outlook.live.com/owa/logoff.owa')
browser.get('https://login.live.com/login.srf?&wreply=https%3a%2f%2foutlook.live.com%2fowa%2f%3fnlp%3d1%26realm%3dlogin.live.com')

username = WebDriverWait(browser, 10).until(
EC.presence_of_element_located((By.XPATH, "//input[@id='i0116']")))
username.clear()
username.send_keys("your email")
nextButton = browser.find_element_by_id('idSIButton9')
nextButton.click()
time.sleep(3)

browser.execute_script("document.getElementById('i0118').setAttribute('class', 'form-control')")
password = WebDriverWait(browser, 50).until(
EC.presence_of_element_located((By.XPATH, "//input[@id='i0118']")))
password.clear()
password.send_keys("your password")
browser.execute_script("document.getElementById('idSIButton9').disabled=false")
signinButton = browser.find_element_by_id('idSIButton9')
signinButton.send_keys(u"登录")
signinButton.click()
time.sleep(5)
browser.close()
迷茫

我把楼主的代码一行一行贴到ipython中执行,并没有遇到元素不可见的问题。
根据楼主贴出来的tb,报错的是test.py文件29行的browser.find_element_by_id('i0118').click()
但这一行并没有出现在楼主贴出的代码中。尴尬了...楼主还是要贴报错的源码哈。
在报错这句前,应该没有显示的等待或者WebDriverWait,我猜。

之所以报这个错误selenium.common.exceptions.ElementNotVisibleException,字面意思理解,是因为渲染出的页面中无法定位这个可见的元素。原因可能会包括元素本身不可见,或者页面渲染未完成,当然还有其他原因...

轻拍...

최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!