热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

selenium配置Firefox和chrome浏览器并模拟登陆豆瓣

最新版本的selenium已不再支持PhantomJS,使用时会直接报错:UserWarning:SeleniumsupportforPhantomJ

最新版本的selenium已不再支持PhantomJS,使用时会直接报错:

UserWarning: Selenium support for PhantomJS has been deprecated, please use headless versions of Chrome or Firefox instead warnings.
warn('Selenium support for PhantomJS has been deprecated, please use headless '

中文意思是:selenium已经放弃PhantomJS,请使用火狐浏览器或者Chrome浏览器的无头模式(headless,即无界面模式)。

首先我们需要解决的selenium对火狐和Chrome浏览器的驱动支持问题,事实上以前并不存在驱动问题,随着浏览器版本的不断提高,才发生驱动问题。


Firefox驱动

火狐需要安装geckodriver,下载最新版geckodriver,将geckodriver.exef放在C:\Program Files (x86)\Mozilla Firefox目录下,并将其加入环境变量,若不加入环境变量,在运行时需要给出驱动所在目录。后面Chrome浏览器同样。代码demo如下:

from selenium import webdriver def main(): profile=webdriver.FirefoxOptions()profile.add_argument('-headless') #设置无头模式driver = webdriver.Firefox(executable_path='C:\Program Files (x86)\Mozilla Firefox\geckodriver', firefox_options=profile) #前面给出路径driver.get("https://www.qiushibaike.com/8hr/page/1/") print(driver.page_source) driver.close() if __name__ == '__main__': main()

Chrome驱动

可直接在这个地址下载Chrome驱动,下载时注意对应的版本号,我的Chrome浏览器是V70,选择2.45版本。
在这里插入图片描述
然后将chromedriver.exe文件放在谷歌浏览器安装目录C:\Program Files (x86)\Google\Chrome\Application下(其它路径也行),自行选择是否添加环境变量。Demo如下:

from selenium import webdriver
from selenium.webdriver.chrome.options import Optionsdef main():chrome_options = Options()chrome_options.add_argument('--headless')chrome_options.add_argument('--disable-gpu')driver = webdriver.Chrome(executable_path='C:\Program Files (x86)\Google\Chrome\chromedriver', chrome_options=chrome_options)driver.get("https://www.baidu.com")print(driver.page_source)driver.close()if __name__ == '__main__': main()

模拟登陆豆瓣

下面我们就用配置好的selenium和浏览器来自动登陆豆瓣,该代码2019.2.12检验有效,如失效说明豆瓣已更改网页代码。
豆瓣首页如下:
在这里插入图片描述
首选项是手机验证码登录,我们使用帐号密码登陆,因此需要首先点击密码登陆,需用Xpath定位位置
在这里插入图片描述
帐号,密码,登陆按钮的位置也用同样方式确定
在这里插入图片描述


注意点:
这样定位后,模拟登陆豆瓣,会直接失败,显示
unable to lacote username
这是因为豆瓣登陆界面使用了框架,下图


我也是检测了好久才看到页面使用了框架(被自己菜到),因此需要先跳转到框架,否则会定位失败,这个故事告诉我们,动手之前最后先分析一下网页使用的技术。

最终代码如下:

from selenium import webdriver
from selenium.webdriver import ActionChains
import time
from selenium.webdriver.support.ui import WebDriverWaitpath = 'C:\Program Files (x86)\Mozilla Firefox\geckodriver'
def main(): #profile=webdriver.FirefoxOptions()#profile.add_argument('-headless') #设置无头模式driver = webdriver.Firefox(executable_path= path) driver.get("https://www.douban.com")driver.switch_to.frame(driver.find_elements_by_tag_name('iframe')[0])action = driver.find_element_by_xpath("/html/body/div[1]/div[1]/ul[1]/li[2]")ActionChains(driver).move_to_element(action).click(action).perform()#WebDriverWait(driver,10).until(lambda the_driver: the_driver.find_element_by_xpath("//*[@id='username']").is_displayed())driver.find_element_by_xpath("//*[@id='username']").send_keys("帐号")driver.find_element_by_xpath("//*[@id='password']").send_keys("密码")driver.find_element_by_xpath("/html/body/div[1]/div[2]/div[1]/div[5]/a").click()time.sleep(10)driver.switch_to.default_content() # 退出frame,没有这一句不能生成屏幕快照# 生成登陆后快照driver.save_screenshot(u"douban.png")driver.close() if __name__ == '__main__': main()

效果如下:
在这里插入图片描述


推荐阅读
  • sklearn数据集库中的常用数据集类型介绍
    本文介绍了sklearn数据集库中常用的数据集类型,包括玩具数据集和样本生成器。其中详细介绍了波士顿房价数据集,包含了波士顿506处房屋的13种不同特征以及房屋价格,适用于回归任务。 ... [详细]
  • vue使用
    关键词: ... [详细]
  • 在Docker中,将主机目录挂载到容器中作为volume使用时,常常会遇到文件权限问题。这是因为容器内外的UID不同所导致的。本文介绍了解决这个问题的方法,包括使用gosu和suexec工具以及在Dockerfile中配置volume的权限。通过这些方法,可以避免在使用Docker时出现无写权限的情况。 ... [详细]
  • Iamtryingtomakeaclassthatwillreadatextfileofnamesintoanarray,thenreturnthatarra ... [详细]
  • Spring源码解密之默认标签的解析方式分析
    本文分析了Spring源码解密中默认标签的解析方式。通过对命名空间的判断,区分默认命名空间和自定义命名空间,并采用不同的解析方式。其中,bean标签的解析最为复杂和重要。 ... [详细]
  • Linux重启网络命令实例及关机和重启示例教程
    本文介绍了Linux系统中重启网络命令的实例,以及使用不同方式关机和重启系统的示例教程。包括使用图形界面和控制台访问系统的方法,以及使用shutdown命令进行系统关机和重启的句法和用法。 ... [详细]
  • 开发笔记:加密&json&StringIO模块&BytesIO模块
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了加密&json&StringIO模块&BytesIO模块相关的知识,希望对你有一定的参考价值。一、加密加密 ... [详细]
  • 本文讨论了在Windows 8上安装gvim中插件时出现的错误加载问题。作者将EasyMotion插件放在了正确的位置,但加载时却出现了错误。作者提供了下载链接和之前放置插件的位置,并列出了出现的错误信息。 ... [详细]
  • Android Studio Bumblebee | 2021.1.1(大黄蜂版本使用介绍)
    本文介绍了Android Studio Bumblebee | 2021.1.1(大黄蜂版本)的使用方法和相关知识,包括Gradle的介绍、设备管理器的配置、无线调试、新版本问题等内容。同时还提供了更新版本的下载地址和启动页面截图。 ... [详细]
  • 使用Ubuntu中的Python获取浏览器历史记录原文: ... [详细]
  • 本文讨论了一个关于cuowu类的问题,作者在使用cuowu类时遇到了错误提示和使用AdjustmentListener的问题。文章提供了16个解决方案,并给出了两个可能导致错误的原因。 ... [详细]
  • 关键词:Golang, Cookie, 跟踪位置, net/http/cookiejar, package main, golang.org/x/net/publicsuffix, io/ioutil, log, net/http, net/http/cookiejar ... [详细]
  • 本文介绍了Android 7的学习笔记总结,包括最新的移动架构视频、大厂安卓面试真题和项目实战源码讲义。同时还分享了开源的完整内容,并提醒读者在使用FileProvider适配时要注意不同模块的AndroidManfiest.xml中配置的xml文件名必须不同,否则会出现问题。 ... [详细]
  • MyBatis多表查询与动态SQL使用
    本文介绍了MyBatis多表查询与动态SQL的使用方法,包括一对一查询和一对多查询。同时还介绍了动态SQL的使用,包括if标签、trim标签、where标签、set标签和foreach标签的用法。文章还提供了相关的配置信息和示例代码。 ... [详细]
  • r2dbc配置多数据源
    R2dbc配置多数据源问题根据官网配置r2dbc连接mysql多数据源所遇到的问题pom配置可以参考官网,不过我这样配置会报错我并没有这样配置将以下内容添加到pom.xml文件d ... [详细]
author-avatar
啊啊毛
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有