这个selenium代码为什么无法登录?用户名密码正确的情况下
from selenium import webdriverurl='网址发不上来'
browser=webdriver.Firefox()
browser.get(url)
u=browser.find_element('name','membername')
ps=browser.find_element('name','memberpass')
u.send_keys('用户名')
ps.send_keys('密码')
sub=browser.find_element('name','Submit')
sub.click()
表现就是用户名和密码都自动填写了,sub.click()没有登录进去,同时用户名和密码框又被清空了 可能原因及解决方案:
1. 页面加载延迟问题
建议添加显式等待,确保元素加载完成:
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
# 替换原有定位代码为:
u = WebDriverWait(browser, 10).until(
EC.presence_of_element_located((By.NAME, 'membername'))
)
ps = WebDriverWait(browser, 10).until(
EC.presence_of_element_located((By.NAME, 'memberpass'))
)
2. iframe嵌套问题
如果登录框在iframe中,需要先切换:
iframe = browser.find_element(By.TAG_NAME, 'iframe')
browser.switch_to.frame(iframe)
# 再执行元素定位操作
3. 表单提交方式问题
尝试改用回车提交:
ps.send_keys('密码' + Keys.RETURN)
或改用表单提交:
browser.find_element(By.NAME, 'membername').submit()
4. 反爬检测问题
添加以下参数绕过自动化检测(Firefox示例):
from selenium.webdriver.firefox.options import Options
options = Options()
options.set_preference('dom.webdriver.enabled', False)
browser = webdriver.Firefox(options=options)
5. 验证失败清空输入框
在最后添加错误提示检测:
error = browser.find_elements(By.CLASS_NAME, 'error-tips')
if error:
print(f"登录失败原因:{error.text}")
建议按顺序排查以上可能性,推荐优先尝试方案1+方案3的组合。如果仍有问题,可以查看页面是否有动态变化的参数需要处理(比如token值)。
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 网址去掉 https:// 发上来,我帮你试试 player-none 发表于 2025-4-10 18:31
网址去掉 https:// 发上来,我帮你试试
按照这个解决了:
ps.send_keys('密码' + Keys.RETURN)
网址发不了,叫盒子论坛
页:
[1]