我是如何实现用selenium进行模拟登陆的

这是一个艰难而有趣的过程
就像
在升级打怪通关一样

  1. 下载
    https://blog.csdn.net/weixin_41777219/article/details/84935474

  2. 验证是否登陆成功

from selenium import webdriver
import time

# 无界面调试需要的(当有界面调试时就把这一小块去掉)
from pyvirtualdisplay import Display
display = Display(visible=0, size=(800, 600))  # 不用这个会报错:Process unexpectedly closed with status 1
display.start()

driver = webdriver.Firefox()
driver.get("某网站的login网址")  # 登录页面

time.sleep(20)
driver.switch_to.frame('alibaba-login-box')    # 获取动态网页代码的关键
time.sleep(10)
driver.find_element_by_id('fm-login-id').send_keys('用户名')
time.sleep(10)
driver.find_element_by_id('fm-login-password').send_keys('密码')
time.sleep(10)
driver.find_element_by_id('fm-login-submit').click()

time.sleep(30)
cookies = driver.get_cookies()
print(driver.current_url)    # 登陆成功之后一般页面会跳转
# print(driver.page_source)

driver.close()

然后,很遗憾!我输出的current_url并没有跳转
到底是哪里出了问题呢!好想看到模拟登陆的执行过程!(因为我是远程调试,所以在本地看不到服务器端的firefox的运行界面)
那就进入第3步

  1. ubuntu服务器的可视化

3.1 下载配置,我的这个记录里面提到教程(有点绕哈哈)
https://blog.csdn.net/weixin_41777219/article/details/85018675
ok,该下载的下载完了

3.2 DISPLAY的配置
知识:在linux系统中,DISPLAY用来设置系统的图形界面显示到何处

具体如下:
ssh连接到服务器后
可以先查看当前的DISPLAY

echo $DISPLAY

一次性设置(下次登入就无效了)

export DISPLAY=localhost:3      # 这个上就是上面链接中 vncserver :3 的3,要一致

永久设置

cd ~
vi ~/.bashrc

输入或修改
export DISPLAY=localhost:3

3.2 测试
把上面的代码去掉 “无界面调试” 的那一小块,保存,upload到服务器上。
然后在本地Ubuntu的终端ssh连接服务器,并执行这段代码。具体看截图:
在这里插入图片描述把上图在pycharm中,复制画红线后面的部分到终端中执行,如下图:
在这里插入图片描述
然后,模拟登陆的过程就会出现在vnc的界面中啦!(当然,此时你的vnc要开着,连接好)

3.3 pycharm上运行
有一个问题,就是为什么不可以直接在pycharm上运行呢?
这个还是涉及到界面,跟DISPLAY的问题。目前没搞懂
但是,确定代码没错之后
没有界面也没关系啊!
所以再用最上面的代码直接再pycharm运行一遍!
还是无法进行页面跳转!可能是pyvirtualdisplay的关系?
后来,换了一个方法,把那一小块代码替换为:

from selenium.webdriver import FirefoxOptions
opts = FirefoxOptions()
opts.add_argument("--headless")
driver = webdriver.Firefox(firefox_options=opts)

# 注意:最上面的代码的driver = webdriver.Firefox() 要删去
  1. 搞定

猜你喜欢

转载自blog.csdn.net/weixin_41777219/article/details/85028986