【发布时间】:2016-11-08 01:20:17
【问题描述】:
我正在制作一个简单的程序,它使我能够填写登录表单并向某人发送电子邮件.. 当我使用它时,它只是不再继续,而是在打开一些链接时停下来。
# Practice Program!
import requests, os, bs4, webbrowser
from selenium import webdriver
url = 'http://google.com'
res = requests.get(url)
res.raise_for_status()
browser = webdriver.Firefox()
browser.get(url)
signinElem = browser.find_element_by_id('gb_70')
signinElem.click()
idElem = browser.find_element_by_id('Email')
idElem.send_keys('not_my_real_id')
idElem.submit()
pwElem = browser.find_element_by_id('Passwd')
pwElem.send_keys('not_my_pw')
pwElem.submit()
mailElem = browser.find_element_by_class_name('gb_P')
mailElem.click()
composeElem = browser.find_element_by_class_name('class="T-I J-J5-Ji T-I-KE L3')
composeElem.click()
代码运行良好,直到它到达 pwElem,这让我想知道为什么 signinElem 和 idElem 有效但 pwElem 无效??
我碰巧遇到了类似的情况,我可以通过一些链接,但其他链接不能。这段代码有什么问题?
我得到以下错误
Traceback(最近一次调用最后一次):文件 “C:/Users/Cyber/Downloads/WriteMail.py”,第 22 行,在 pwElem = browser.find_element_by_id('Passwd') 文件 "C:\Users\Cyber\Downloads\lib\site-packages\selenium\webdriver\remote\webdriver.py", 第 269 行,在 find_element_by_id 中 返回 self.find_element(by=By.ID, value=id_) 文件“C:\Users\Cyber\Downloads\lib\site-packages\selenium\webdriver\remote\webdriver.py”, 第 752 行,在 find_element 中 'value': value})['value'] 文件 "C:\Users\Cyber\Downloads\lib\site-packages\selenium\webdriver\remote\webdriver.py", 第 236 行,执行中 self.error_handler.check_response(response) 文件 "C:\Users\Cyber\Downloads\lib\site-packages\selenium\webdriver\remote\errorhandler.py", 第 192 行,在 check_response 中 raise exception_class(message, screen, stacktrace) selenium.common.exceptions.NoSuchElementException: Message: Unable to 定位元素:{"method":"id","selector":"Passwd"} 堆栈跟踪: 在 (file:///C:/Users/Cyber/AppData/Local/Temp/tmpczr__hhf/extensions/fxdriver@googlecode.com/components/driver-component.js:10770) 在 (file:///C:/Users/Cyber/AppData/Local/Temp/tmpczr__hhf/extensions/fxdriver@googlecode.com/components/driver-component.js:10779) 在 (file:///C:/Users/Cyber/AppData/Local/Temp/tmpczr__hhf/extensions/fxdriver@googlecode.com/components/command-processor.js:12661) 在 (file:///C:/Users/Cyber/AppData/Local/Temp/tmpczr__hhf/extensions/fxdriver@googlecode.com/components/command-processor.js:12666) 在 (file:///C:/Users/Cyber/AppData/Local/Temp/tmpczr__hhf/extensions/fxdriver@googlecode.com/components/command-processor.js:12608)
【问题讨论】:
-
显示
HTML相同\ -
+ 当试图点击一些链接时, browser.find_by_id 和 browser.find_by_class_name 有什么区别吗?这就是为什么有些有效而有些无效的原因吗?
-
@Andersson 我尝试使用 bs4 解析 html 代码,但我得到了 []... soup.select('#Passwd'), soup.select('password-shown'), soup。 select('input[Passwd]'),全部。
-
你的浏览器能得到
HTML吗?右键单击目标元素 -> 显示源 -
@Andersson 这是链接! docs.google.com/document/d/…我被一些邪恶的军事计划阻止了,所以我花了一些时间让它工作..:)