我真的很喜欢Python selenium modu

2024-09-26 17:55:09 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在做一个简单的程序,让我填写登录表和发送电子邮件给某人。。当我在上面的时候,它只是不去更多,停在打开一些链接。在

# 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和{}起作用,而{}??在

我碰巧遇到了类似的情况,我可以通过一些链接,但其他的不能。这个代码有什么问题?在

我犯了以下错误

Traceback (most recent call last): File "C:/Users/Cyber/Downloads/WriteMail.py", line 22, in pwElem = browser.find_element_by_id('Passwd') File "C:\Users\Cyber\Downloads\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 269, in 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", line 752, in find_element 'value': value})['value'] File "C:\Users\Cyber\Downloads\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 236, in execute self.error_handler.check_response(response) File "C:\Users\Cyber\Downloads\lib\site-packages\selenium\webdriver\remote\errorhandler.py", line 192, in check_response raise exception_class(message, screen, stacktrace) selenium.common.exceptions.NoSuchElementException: Message: Unable to locate element: {"method":"id","selector":"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)


Tags: pybrowsercomidbydownloadsseleniumline
2条回答

当您提交Email时,Paasword字段是可见的,因此您需要实现WebDriverWait,直到{}字段可见,如下所示:

from selenium.webdriver.support import expected_conditions as EC

      -

wait = WebDriverWait(browser, 10)

idElem = wait.until(EC.visibility_of_element_located((By.ID, "Email")))
idElem.send_keys('not_my_real_id')
idElem.submit()


pwElem = wait.until(EC.visibility_of_element_located((By.ID, "Passwd")))
pwElem.send_keys('not_my_pw')
pwElem.submit()

希望它能帮到你……:)

实际上是你的错误信息说:。NoSuchElementException:消息:找不到元素

我看到google登录页面上有一个next按钮,就在Email输入框的正下方。在

因此,您可以单击“下一步”按钮找到密码输入框

相关问题 更多 >

    热门问题