微博用python登陆selenium?
我在微博登录硒,但我无法处理窗口弹出。 这是我的代码。什么是问题?微博用python登陆selenium?
from selenium import webdriver
username = 'your id'
password = 'your password'
driver = webdriver.Firefox()
driver.get("http://overseas.weibo.com/")
driver.implicitly_wait(10)
handles = driver.window_handles
driver.find_elements_by_link_text('登入微博')[0].click()
driver.implicitly_wait(10)
driver.switch_to_alert()
driver.find_element_by_name('memberid').send_keys(username)
driver.find_element_by_name('passwd').send_keys(password)
driver.find_elements_by_link_text('登入')[0].click()
回溯(最近通话最后一个): 文件 “d:/python34/weibo_login.py” 35行,在 driver.find_element_by_name( 'MEMBERID')send_keys(用户名) 文件“C:\ Python34 \ lib \ site-packages \ selenium \ webdriver \ remote \ webdriver.py”,第362行,在find_element_by_name中 返回self.find_element(by = By.NAME,value = name) 文件“C:\ Python34 \ lib \ site-packages \ selenium \ webdriver \ remote \ webdriver.py“,第744行,在find_element中 {'using':by,'value':value})['value'] File”C:\ Python34 \ LIB \站点包\硒\ webdrive self.error_handler.check_response(response) 文件“C:\ Python34 \ lib \ site-packages \ selenium \ webdriver \ remote \ errorhandler.py”,第194行,in check_response raise exception_class(message,screen,stacktrace) selenium.common.exceptions.NoSuchElementException:消息:无法定位元素:{“method”:“name”,“selector”:“memberid”} Stacktrace: 在FirefoxDriver.prototype.findElementInternal_(file:/// C:/Users/hena/AppData/Local/Temp/tmpwk788t0k/extensions/[email protected]/components/driver-component.js:10770) at fxdriver.Timer .prototype.setTimeout/< .notify(file:/// C:/Users/hena/AppData/Local/Temp/tmpwk788t0k/extensions/[email protected]/components/driver-component.js:625)
实际打开的登录表单位于iframe
之内。这不是alert
。你需要如下切换这个特殊的iframe
之前,首先找到元素和sendKeys
: -
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
username = 'your id'
password = 'your password'
driver = webdriver.Firefox()
driver.get("http://overseas.weibo.com/")
wait = WebDriverWait(browser, 10)
link = wait.until(EC.visibility_of_element_located((By.LINK_TEXT, "登入微博")))
link.click()
frame = wait.until(EC.visibility_of_element_located((By.CLASS_NAME, "cboxIframe")))
driver.switch_to_frame(frame)
user = wait.until(EC.visibility_of_element_located((By.ID, "memberid")))
user.send_keys(username)
passwd = wait.until(EC.visibility_of_element_located((By.ID, "passwd")))
passwd.send_keys(password)
button = wait.until(EC.visibility_of_element_located((By.ID, "login")))
button.click()
希望它能帮助... :)
你改变我的代码全部。 omgㅜㅠ,但是,非常感谢〜^^ –
@오은아은아欢迎您...高兴地帮助您...我只是想为您提供定位元素的最佳方式...... :) –
是的,您的代码是最好的,但我的代码很容易理解我^^ –