iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Python+Selenium+phantomjs怎么实现网页模拟登录和截图
  • 588
分享到

Python+Selenium+phantomjs怎么实现网页模拟登录和截图

2023-06-02 01:06:40 588人浏览 独家记忆

Python 官方文档:入门教程 => 点击学习

摘要

这篇文章主要介绍“python+selenium+phantomjs怎么实现网页模拟登录和截图”,在日常操作中,相信很多人在Python+Selenium+phantomjs怎么实现网页模拟登录和截图问题上存在疑惑,小编查阅了各式资料,整理

这篇文章主要介绍“python+selenium+phantomjs怎么实现网页模拟登录和截图”,在日常操作中,相信很多人在Python+Selenium+phantomjs怎么实现网页模拟登录和截图问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Python+Selenium+phantomjs怎么实现网页模拟登录和截图”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

  本文全部操作均在windows环境下

  安装 Python

  Python是一种跨平台的计算机程序设计语言,它可以运行在Windows、Mac和各种linux/Unix系统上。是一种面向对象的动态类型语言,最初被设计用于编写自动化脚本(shell),随着版本的不断更新和语言新功能的添加,越来越多被用于独立的、大型项目开发

  去Python的官网 www.python.org 下载安装

  安装时勾选pip (python包管理工具),同时安装pip

  python安装好之后,打开命令行工具cmd,输入“python -V”,然后敲回车,如果出现python版本号,则表示安装成功

  安装 selenium

  selenium 是一个用于WEB应用程序测试的工具。selenium测试直接运行在浏览器中,就像真正的用户在操作一样。支持的浏览器包括IE(7, 8, 9, 10, 11),Mozilla Firefox,Safari,Google Chrome,Opera等。selenium 是一套完整的web应用程序测试系统,包含了测试的录制(selenium IDE),编写及运行(Selenium Remote Control)和测试的并行处理(Selenium Grid)

  通过python包管理工具pip安装

  pip install selenium

  安装 phantomjs

  phantomJS是一个基于webkit的javascript api。它使用QtWebKit作为它核心浏览器的功能,使用webkit来编译解释执行javaScript代码。任何你可以基于在webkit浏览器做的事情,它都能做到。它不仅是个隐性的浏览器,提供了诸如CSS选择器、支持wen标准、DOM操作、JSONHTML5等,同时也提供了处理文件I/O的操作,从而使你可以向操作系统读写文件等。phantomJS的用处可谓非常广泛诸如网络监测、网页截屏、无需浏览器的wen测试、页面访问自动化等

  phantomjs安装链接 www.phantomjs.org

  在桌面创建demo文件夹,创建demo.py文件,当做我们的脚本文件,创建img文件夹用来存放截取的图片

  demo.py:

  # coding=utf-8

  # 导入网页驱动软件

  from selenium import webdriver

  # 导入WebDriverWait等待模块

  from selenium.webdriver.support.wait import WebDriverWait

  import time

  # 调用环境变量指定的PhantomJS浏览器创建浏览器对象

  # 括号内为phantomjs安装位置

  driver = webdriver.PhantomJS(executable_path="D:\\Python27\\Scripts\\phantomjs-2.1.1-windows\\bin\\phantomjs.exe")

  # 访问的网址(以央视网为例)

  driver.get("Http://www.cctv.com/")

  # 最大化浏览器

  driver.maximize_window()

  # 模拟点击登录按钮登录弹出登录框(后面有定位元素方法介绍)

  driver.find_elements_by_xpath('//span[@class="btn_icon"]')[1].click()

  # 等待登录页面加载完成,WebDriverWait (后面有等待方法介绍)

  WebDriverWait(driver, 10, 0.5).until(lambda diver:driver.find_element_by_xpath('//a[@class="dl"]'),message="")

  time.sleep(2)

  # 截取登录框的页面保存到相应位置

  driver.save_screenshot('demo\\img\\login1.png')

  # 定位登录页面用户名和密码元素并模拟填入用户名和密码

  driver.find_element_by_name("username").send_keys('xxxxxxxxxxx')

  driver.find_element_by_name("passwd_view").send_keys('xxxxxxxxxxx')

  # 模拟点击登录按钮登录

  driver.find_element_by_link_text('登录').click()

  WebDriverWait(driver, 10, 0.5).until(lambda diver:driver.find_elements_by_xpath('//span[@class="btn_icon"]'),message="")

  time.sleep(2)

  # 截取登录后的页面保存到相应位置

  driver.save_screenshot('demo\\img\\login2.png')

  # 模拟点击按钮跳转体育页面

  driver.find_element_by_link_text('体育').click()

  WebDriverWait(driver, 10, 0.5).until(lambda diver:driver.find_element_by_link_text('CBA'),message="")

  time.sleep(2)

  # 截取体育页面保存到相应位置

  driver.save_screenshot('demo\\img\\sport.png')

  # 退出驱动关闭所有窗口

  driver.quit()

  运行python脚本

  打开命令行窗口cmd,切换到demo.py文件的路径下,输入

  python demo.py

  脚本运行后会自动填写我们设定好的用户名密码并登录,截取设置好的页面并保存到img文件夹

  登录框的页面截图:

  登录后的页面截图:

  体育页面截图:

  部分方法介绍:

  区块定位截图(二次截图)方法:

  PIL(Python Image Library)是python的第三方图像处理库,PIL功能非常强大,API非常简单易用,已经是Python平台事实上的图像处理标准库了。 PIL只支持python2.x的版本,python3.x的版本需要安装pillow, pillow是一个对PIL友好的分支,但是支持python3.x的版本

  python2.x版本下安装PIL进行二次截图

  pip install PIL

  python3.x版本下安装pillow 进行区块定位截图

  pip install pillow

  demo.py:

  # 导入Image类

  from PIL import Image

  # 定位需要二次截图区块的元素

  img = driver.find_element_by_xpath('//*[@class="weui-img"]')

  # 区块元素左上角在网页中的x坐标

  left = img.location['x']

  # 区块元素左上角在网页中的y坐标

  top = img.location['y']

  # 区块元素右下角在网页中的x坐标

  right = img.location['x'] + img.size['width']

  # 区块元素右下角在网页中的y坐标

  bottom = img.location['y'] + img.size['height']

  # 打开页面的截图

  photo = Image.open('demo\\img\\img_page.png')

  # 根据区块元素坐标实现二次截图

  photo = photo.crop((left, top, right, bottom))

  # 保存二次截图郑州人流医院哪家好 http://m.zzzy120.com/

  photo.save('demo\\img\\img.png')

  WebDriver8种基本元素定位方法:

  1. find_element_by_id() 根据id属性进行定位

  例如: find_element_by_id(“one”) 定位id为one的元素

  2. find_element_by_name() 根据name属性进行定位

  例如: find_element_by_name(“one”) 定位name属性为one的元素

  3. find_element_by_class_name() 根据class的名字进行定位

  例如: find_element_by_class_name(“one”) 定位class为one的元素

  4. find_element_by_xpath() xpath是XML路径语言,通过确定xml文档中的元素位置来完成对元素的定位

  例如: find_element_by_xpath("//div[@id=‘one’]") 定位id为one的div元素

  find_element_by_xpath("//*[@class=‘two’]") 定位class为two的元素

  5. find_element_by_css_selector() 根据css属性进行定位

  例如: find_element_by_css_selector("#one") 定位id为one的div元素

  find_element_by_css_selector(".two") 定位class为two的元素

  6. find_element_by_tag_name () 根据标签名进行定位

  例如: find_element_by_tag_name(“input”) 定位input元素

  7. find_element_by_link_text() 根据完整a链接文字进行定位

  find_element_by_partial_link_text() 根据部分a链接文字进行定位

  例如: find_element_by_link_text(“新闻”) 定位文字为‘新闻’的a元素

  find_element_by_partial_link_text(“闻”) 定位文字包括‘闻’的a元素

  8. By定位

  ( 需要导入By类:from selenium.webdriver.common.by import By )

  例如: find_element(By.ID,“one”) 定位id为one的元素

  find_element(By.NAME,“one”) 定位name属性为one的元素

  find_element(By.CLASS_NAME,“one”) 定位class为one的元素

  find_element(By.TAG_NAME,“div”) 定位div元素

  当定位元素为多个时,使用elements复数定位,即把定位方法中的element换成elements,此时获取到的为相同属性的一组元素,返回一个list队列,然后可以再去定位单个元素

  例如: find_elements_by_class_name(“one”)[1] 定位class为one的所有元素中第二个元素

  selenium的3种等待方法:

  在做自动化测试时,有时下一步的操作会依赖上一步的结果或者内容,上一步操作成功完成之后才能进行下一步操作,此时,我们就需要使用等待,来判断上一步操作是否完成,进而执行下面的操作,例如登录页面进行登录操作时,需要等待登录页面加载成功,才能定位到用户名和密码对应的元素,然后才能填充用户名和密码,进行登录操作。

  1. 强制等待

  time.sleep(s) 强制等待s秒后再进行下面的操作

  缺点:不易把控时间,等待时间固定,如果没到设置时间,已经可以进行下面的操作,则需要多余的等待,如果到达设置时间,还没完成上一步操作,下面的操作还无法正常进行,则会直接报错

  2. 隐式等待

  implicitly_wait(s) 在s秒内,上一步操作完成,进行下一步操作,否则等待s秒后,然后进行下一步操作

  缺点:如果到达设置时间,还没完成上一步操作,下面的操作还无法正常进行,则会直接报错

  3. 显式等待(推荐使用)

  WebDriverWait(driver,timeout,poll_frequency=0.5,ignored_exceptions=None)

  等待页面加载完成,找到某个条件发生后再继续执行后续代码,如果超过设置时间检测不到则抛出异常

  driver:浏览器驱动

  timeout:最长超时时间,默认以秒为单位

  poll_frequency:检测的间隔步长,默认为0.5s

  ignored_exceptions:超时后的抛出的异常信息,默认抛出NoSuchElementExeception异常

  与until()结合使用:

  WebDriverWait(driver, s).until(method,message="")

  在s秒内,每0.5秒检测一次,如果传入的方法返回为true,进行下一步操作,如果到达设置时间未检测到,下面的操作无法正常运行,则会直接报错

到此,关于“Python+Selenium+phantomjs怎么实现网页模拟登录和截图”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注编程网网站,小编会继续努力为大家带来更多实用的文章!

--结束END--

本文标题: Python+Selenium+phantomjs怎么实现网页模拟登录和截图

本文链接: https://www.lsjlt.com/news/228374.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Python+Selenium+phantomjs怎么实现网页模拟登录和截图
    这篇文章主要介绍“Python+Selenium+phantomjs怎么实现网页模拟登录和截图”,在日常操作中,相信很多人在Python+Selenium+phantomjs怎么实现网页模拟登录和截图问题上存在疑惑,小编查阅了各式资料,整理...
    99+
    2023-06-02
  • python怎么实现selenium截图
    可以使用虚拟屏幕的方式,在虚拟屏幕上运行浏览器并进行截图操作,这样就不会影响当前屏幕的展示。具体实现可以使用Xvfb和pyvirtualdisplay库。Xvfb是虚拟X11服务器,可以在内存中创建一个虚拟屏幕,而pyvirtualdisp...
    99+
    2023-05-14
    Python Selenium
  • 使用selenium模拟动态登录百度页面的实现
    目标:模拟手动登录百度页面的过程,打开chrome浏览器,输入百度网址,进入百度网页,点击登录,输入账号和密码,进入登录页面。 代码演示过程: from selenium impor...
    99+
    2023-05-20
    selenium模拟动态登录百度页面 selenium动态登录
  • Python编程使用Selenium模拟淘宝登录实现过程
    目录一、利用xpath进行(全程使用)二、代码部分与图片内容一、利用xpath进行(全程使用) driver.find_element_by_xpath() 二、代码部分与图片...
    99+
    2024-04-02
  • 怎么用vue实现网页截图
    这篇文章给大家分享的是有关怎么用vue实现网页截图的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。1、安装html2Canvasnpm install html2canvas --sa...
    99+
    2023-06-25
  • 怎么在python中使用selenium模块实现自动登录
    怎么在python中使用selenium模块实现自动登录?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。python可以做什么Python是一种编程语言,内置了许多有效的工具...
    99+
    2023-06-14
  • java怎么实现网页登录
    在Java中实现网页登录,可以使用Java Web技术,如Servlet、JSP、HTML、CSS、JavaScript等。以下是一...
    99+
    2023-09-14
    java
  • Python怎么用selenium实现自动登录和下单功能
    这篇文章主要讲解了“Python怎么用selenium实现自动登录和下单功能”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Python怎么用selenium实现自动登录和下单功能”吧!前期准...
    99+
    2023-07-05
  • 怎么使用python+selenium实现扫码免密登录
    这篇文章主要介绍“怎么使用python+selenium实现扫码免密登录”,在日常操作中,相信很多人在怎么使用python+selenium实现扫码免密登录问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么使...
    99+
    2023-07-02
  • python爬虫模拟登录之图片验证码实现详解
    我们在用爬虫对门户网站进行模拟登录是总会有输入图片验证码的,例如这种 那我们怎么解决这个问题实现全自动的模拟登录呢?只要思想不滑坡,办法总比困难多。我这里使用的是百度智能云里面的文...
    99+
    2024-04-02
  • 怎么使用vue和axios实现登录拦截
    本篇内容主要讲解“怎么使用vue和axios实现登录拦截”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么使用vue和axios实现登录拦截”吧!该项目是利用了Github 提供的persona...
    99+
    2023-07-04
  • JavaWeb Servlet怎么实现网页登录功能
    小编给大家分享一下JavaWeb Servlet怎么实现网页登录功能,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!具体内容如下:1、配置文件,导入jar包2、创建数据库环境use student;create&n...
    99+
    2023-06-20
  • Selenium怎么实现页面虚拟滚动和无限滚动
    非常抱歉,由于您没有提供文章标题,我无法为您生成一篇高质量的文章。请您提供文章标题,我将尽快为您生成一篇优质的文章。...
    99+
    2024-05-14
  • Python模拟网页中javascript怎么实现加密与验证
    这篇文章主要讲解了“Python模拟网页中javascript怎么实现加密与验证”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Python模拟网页中javascript怎么实现加密与验证”吧...
    99+
    2023-06-17
  • 怎么使用PHP实现网页自动截图功能
    今天小编给大家分享一下怎么使用PHP实现网页自动截图功能的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。一、准备工作要实现网页...
    99+
    2023-07-05
  • 怎么用C#+Selenium+ChromeDriver爬取网页,模拟真实的用户浏览行为
    本篇内容介绍了“怎么用C#+Selenium+ChromeDriver爬取网页,模拟真实的用户浏览行为”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学...
    99+
    2023-06-15
  • Python基于Selenium怎么实现动态网页信息的爬取
    这篇文章主要介绍“Python基于Selenium怎么实现动态网页信息的爬取”,在日常操作中,相信很多人在Python基于Selenium怎么实现动态网页信息的爬取问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答...
    99+
    2023-06-22
  • 使用ajax怎么实现微信网页授权登录
    今天就跟大家聊聊有关使用ajax怎么实现微信网页授权登录,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。功能实现引导用户唤起微信授权确认页面这里需要我们做两件事,第一去配置jsapi域...
    99+
    2023-06-08
  • Python怎么实现获取网页内容及自动填表单与登录功能
    库import time import ddddocr源码# import threading # 导入threading模块 # from Feishu_SendMsg import * # Identification verifi...
    99+
    2023-05-16
    Python
  • Python怎么用requests模块实现动态网页爬虫
    小编给大家分享一下Python怎么用requests模块实现动态网页爬虫,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!开发工具Python版本: 3.6.4相关模块:urllib模块;random模块;requests模块...
    99+
    2023-06-29
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作