用pycharm运行模拟登录QQ邮箱打开chrome浏览器后,浏览器自动退出。代码如下
from selenium import webdriver
from selenium.common.exceptions import TimeoutException # 超出时长
from selenium.webdriver.common.by import By # 查找元素
from selenium.webdriver.support import expected_conditions as EC # 元素是否加载完毕
from selenium.webdriver.support.ui import WebDriverWait # 页面等待
from configparser import ConfigParser # 读取ini文件
cfg = ConfigParser()
r = cfg.read('ningzhi.ini') # 这个ningzhi.ini是我自己的文件,目的就是防止账号密码在代码中泄露,大家在模仿的时候可以自己创建这个文件(后缀为ini文件)
'''文件内容:
[user]
user:账号
[password]
password:密码
'''
user = cfg.get('user','user')
password = cfg.get('password','password')
class Login_QQ:
def __init__(self):
self.driver = webdriver.Edge()
self.driver.get("https://mail.qq.com/")
self.wait = WebDriverWait(self.driver, 10)
def search(self):
try:
self.driver.switch_to.frame('login_frame') # 进入iframe 方法一
# 找到iframe 通过iframe进行点击
# login_iframe = self.wait.until(EC.presence_of_element_located((By.ID,'login_frame')))
# # 进入新的页面进行点击 方法二
# self.driver.switch_to.frame(login_iframe)
# 获取账号密码登陆按钮
# self.wait.until(EC.presence_of_element_located((By.XPATH,'//*[@id="switcher_plogin"]'))).click()
# 获取账号输入框
self.wait.until(EC.presence_of_element_located((By.ID, 'u'))).send_keys(user)
# 获取密码输入框
self.wait.until(EC.presence_of_element_located((By.ID, 'p'))).send_keys(password)
# 获取登陆按钮,并点击
self.wait.until(EC.presence_of_element_located((By.ID, 'login_button'))).click()
except TimeoutException:
return self.search()
if __name__ == '__main__':
spider = Login_QQ()
spider.search()
运行环境:
pycharm版本:2021.3
python版本:3.10
分析:
1、我首先检查Chrome浏览器驱动与浏览器版本是否匹配,检查后发现完全匹配 ,这里我排除了驱动的问题
2,接下来我又改用Edge浏览器与浏览器驱动,发现还是闪退,这里我又排除浏览器的问题
3,既然浏览器和驱动都没有问题,那就只剩下代码和pycharm问题
解决方案
经过我反复测试给出了两种解决方案:
方案一:
在代码的最下方加一个死循环
if __name__ == '__main__':
spider = Login_QQ()
spider.search()
while True:
pass
方案二:
降selenium版本
我挑了4.4.3发现解决了问题,所以也就没有再试其他的版本,也许其他的低版本也可以解决问题。
pip install selenium==4.4.3
闲聊:
也许这个chrome自动退出的问题其实并不是个问题,代码成功运行结束,浏览器关闭,可能在selenium4.7.2版本上就是这样运行的,而低版本的selenium在代码运行完成之后就不会自动关闭浏览器,目前来说我比较喜欢后者,所以选择了安装4.4.3。
希望可以帮助到遇到和我一样问题的小伙伴,感谢阅读!
版权归原作者 Python柠栀 所有, 如有侵权,请联系我们删除。