我正在编写一个简单的程序,这样我就可以填写登录表单并发送电子邮件给某人了......虽然我正在使用它,但它不会更多地停止打开一些链接
# 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中 return self.find_element(by = By.ID,value = id_)File" C:\ Users \ Cyber \ Downloads \ lib \ site-packages \ selenium \ webdriver \ remote \ webdriver.py", 第752行,在find_element中 '价值':价值})['价值']文件" C:\ Users \ Cyber \ Downloads \ lib \ site-packages \ selenium \ webdriver \ remote \ webdriver。 PY&#34 ;, 第236行,执行中 self.error_handler.check_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:消息:无法 locate元素:{"方法":" id","选择器":" Passwd"} Stacktrace: at(file:/// C:/Users/Cyber/AppData/Local/Temp/tmpczr__hhf/extensions/fxdriver@googlecode.com/components/driver-component.js:10770) at(file:/// C:/Users/Cyber/AppData/Local/Temp/tmpczr__hhf/extensions/fxdriver@googlecode.com/components/driver-component.js:10779) at(file:/// C:/Users/Cyber/AppData/Local/Temp/tmpczr__hhf/extensions/fxdriver@googlecode.com/components/command-processor.js:12661) at(file:/// C:/Users/Cyber/AppData/Local/Temp/tmpczr__hhf/extensions/fxdriver@googlecode.com/components/command-processor.js:12666) at(file:/// C:/Users/Cyber/AppData/Local/Temp/tmpczr__hhf/extensions/fxdriver@googlecode.com/components/command-processor.js:12608)
答案 0 :(得分:1)
public void btnInsert_Click(object sender, EventArgs e)
{
Word.Application objApplication = Globals.ThisAddIn.Application;
Word.Selection objSelection = objApplication.Selection;
Word.Range objRange = objSelection.Range;
objRange.InsertAfter("Sample Text");
objRange.Collapse(Word.WdCollapseDirection.wdCollapseEnd);
objRange.Select();
}
时, Paasword
字段会显示,因此您需要实施Email
以等待WebDriverWait
字段可见,如下所示: -
password
希望它会对你有所帮助.. :)
答案 1 :(得分:0)
实际上您的错误消息显示:.NoSuchElementException:消息:无法找到元素
我看到谷歌登录页面上有一个下一个按钮,位于电子邮件输入框的正下方。
所以你可以点击下一个按钮找到密码输入框