|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
- from selenium import webdriver
-
- url='网址发不上来'
-
- 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[0].text}")
复制代码
建议按顺序排查以上可能性,推荐优先尝试方案1+方案3的组合。如果仍有问题,可以查看页面是否有动态变化的参数需要处理(比如token值)。
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
|
|