selenium

简介

selenium使用JavaScript模拟真实用户对浏览器进行操作。测试脚本执行时,浏览器自动按照脚本代码做出点击,输入,打开,验证等操作,就像真实用户所做的一样,从终端用户的角度测试应用程序。

与python集成

from selenium import webdriver

driver = webdriver.Firefox()

driver.get("http://www.baidu.com")
driver.find_element_by_id("kw").send_keys("selenium")
driver.find_element_by_id("su").click()
driver.quit()

selenium可以操纵各大主流浏览器chrome、firefox、ie等等,但需要下载相应的驱动包

chrome: http://chromedriver.storage.googleapis.com/index.html

firefox:https://github.com/mozilla/geckodriver/releases/

ie:http://selenium-release.storage.googleapis.com/index.html

webdriver(即:浏览器对象)基本使用方法

  1. 打开关闭标签页

     #打开
    def get(self, url) #关闭
    def close(self) #退出浏览器
    def quit(self)
  2. 设置浏览器宽高

     def set_window_size(self, width, height, windowHandle='current'):
    """
    Sets the width and height of the current window. (window.resizeTo) :Args:
    - width: the width in pixels to set the window to
    - height: the height in pixels to set the window to :Usage:
    driver.set_window_size(800,600)
    """
  3. 对象定位

    #通过id方式定位

    driver.find_element_by_id("kw")

     #通过name方式定位
    driver.find_element_by_name("wd") #通过tag name方式定位
    driver.find_element_by_tag_name("input") #通过class name 方式定位
    driver.find_element_by_class_name("s_ipt") #通过CSS方式定位
    driver.find_element_by_css_selector("#kw") #通过xphan方式定位
    driver.find_element_by_xpath("//input[@id='kw']") #通过link方式定位
    driver.find_element_by_link_text("贴 吧") #Partial Link Text 定位
    driver.find_element_by_partial_link_text("贴") #通过by指定方法类型定位
    driver.find_element(By.ID, 'foo')
  4. 定位一组元素

     #与上面类似加上s,但上面会抛出NoSuchElementException,下面找不到则返回empty list
    #通过by指定方法类型定位
    driver.find_elements(By.ID, 'foo')
  5. 框架和窗口定位

     def switch_to(self):
    """
    :Returns:
    - SwitchTo: an object containing all options to switch focus into :Usage:
    element = driver.switch_to.active_element
    alert = driver.switch_to.alert
    driver.switch_to.default_content()
    driver.switch_to.frame('frame_name')
    driver.switch_to.frame(1)
    driver.switch_to.frame(driver.find_elements_by_tag_name("iframe")[0])
    driver.switch_to.parent_frame()
    driver.switch_to.window('main')
    """
  6. 执行js

     def execute_script(self, script, *args):
    """
    Synchronously Executes JavaScript in the current window/frame. :Args:
    - script: The JavaScript to execute.
    - \*args: Any applicable arguments for your JavaScript. :Usage:
    driver.execute_script('return document.title;')
    """ def execute_async_script(self, script, *args):
    """
    Asynchronously Executes JavaScript in the current window/frame. :Args:
    - script: The JavaScript to execute.
    - \*args: Any applicable arguments for your JavaScript. :Usage:
    script = "var callback = arguments[arguments.length - 1]; " \
    "window.setTimeout(function(){ callback('timeout') }, 3000);"
    driver.execute_async_script(script)
    """

webelement(元素)基本使用方法

  1. 点击

     driver.find_element_by_id("su").click()
    driver.find_element_by_id("su").submit()
  2. 输入文本

     driver.find_element_by_id("kw").send_keys("xxx")
  3. 获取属性/文本

     driver.find_element_by_id("kw").text()
    driver.find_element_by_id("kw").get_attribute()
    driver.find_element_by_id("kw").get_property()
  4. 层次定位

     #与webdiriver操作一样,可以以当前元素为父元素查找子元素
    parent = driver.find_element(By.ID, 'parent')
    parent.find_element(By.ID, 'child')

python爬虫入门(4)----- selenium的更多相关文章

  1. Python爬虫入门一之综述

    大家好哈,最近博主在学习Python,学习期间也遇到一些问题,获得了一些经验,在此将自己的学习系统地整理下来,如果大家有兴趣学习爬虫的话,可以将这些文章作为参考,也欢迎大家一共分享学习经验. Pyth ...

  2. python爬虫入门-开发环境与小例子

    python爬虫入门 开发环境 ubuntu 16.04 sublime pycharm requests库 requests库安装: sudo pip install requests 第一个例子 ...

  3. python爬虫动态html selenium.webdriver

    python爬虫:利用selenium.webdriver获取渲染之后的页面代码! 1 首先要下载浏览器驱动: 常用的是chromedriver 和phantomjs chromedirver下载地址 ...

  4. Python爬虫入门教程 48-100 使用mitmdump抓取手机惠农APP-手机APP爬虫部分

    1. 爬取前的分析 mitmdump是mitmproxy的命令行接口,比Fiddler.Charles等工具方便的地方是它可以对接Python脚本. 有了它我们可以不用手动截获和分析HTTP请求和响应 ...

  5. Python爬虫入门教程 43-100 百思不得姐APP数据-手机APP爬虫部分

    1. Python爬虫入门教程 爬取背景 2019年1月10日深夜,打开了百思不得姐APP,想了一下是否可以爬呢?不自觉的安装到了夜神模拟器里面.这个APP还是比较有名和有意思的. 下面是百思不得姐的 ...

  6. Python 爬虫入门(二)——爬取妹子图

    Python 爬虫入门 听说你写代码没动力?本文就给你动力,爬取妹子图.如果这也没动力那就没救了. GitHub 地址: https://github.com/injetlee/Python/blob ...

  7. Python爬虫入门之正则表达式

    在前面我们已经搞定了怎样获取页面的内容,不过还差一步,这么多杂乱的代码夹杂文字我们怎样把它提取出来整理呢?下面就开始介绍一个十分强大的工具,正则表达式! 1.了解正则表达式 正则表达式是对字符串操作的 ...

  8. Python爬虫入门之Cookie的使用

    本节我们一起来看一下Cookie的使用. 为什么要使用Cookie呢? Cookie,指某些网站为了辨别用户身份.进行session跟踪而储存在用户本地终端上的数据(通常经过加密) 比如说有些网站需要 ...

  9. Python爬虫入门之Urllib库的高级用法

    1.设置Headers 有些网站不会同意程序直接用上面的方式进行访问,如果识别有问题,那么站点根本不会响应,所以为了完全模拟浏览器的工作,我们需要设置一些Headers 的属性. 首先,打开我们的浏览 ...

  10. Python爬虫入门之Urllib库的基本使用

    那么接下来,小伙伴们就一起和我真正迈向我们的爬虫之路吧. 1.分分钟扒一个网页下来 怎样扒网页呢?其实就是根据URL来获取它的网页信息,虽然我们在浏览器中看到的是一幅幅优美的画面,但是其实是由浏览器解 ...

随机推荐

  1. 【解读】Http协议

    一.HTTP简介 1.HTTP协议,即超文本传输协议(Hypertext transfer protocol).是一种详细规定了浏览器和万维网(WWW = World Wide Web)服务器之间互相 ...

  2. 03.基于测试开发讲解和Cobertura框架介绍

    首先我们先 CREATE TABLE `t_user` ( `id` int(11) NOT NULL AUTO_INCREMENT, `username` varchar(200) DEFAULT ...

  3. React实战教程之从零开始手把手教你使用 React 最新特性Hooks API 打造一款计算机知识测验App

    项目演示地址 项目演示地址 项目代码结构 前言 React 框架的优雅不言而喻,组件化的编程思想使得React框架开发的项目代码简洁,易懂,但早期 React 类组件的写法略显繁琐.React Hoo ...

  4. 面试官:你刚说你喜欢研究新技术,那么请说说你对 Blazor 的了解

    阅读本文大概需要 1.5 分钟. 最近在几个微信 .NET 交流群里大家讨论比较频繁的话题就是这几天自己的面试经历. 面试官:"你刚说你喜欢研究新技术,那么你对 Blazor 了解多少?&q ...

  5. c语言二维数组的转置

    #include <stdio.h> #include <string.h> #include <stdlib.h> #define maxsize 3 #defi ...

  6. 入门大数据---Sqoop基本使用

    一.Sqoop 基本命令 1. 查看所有命令 # sqoop help 2. 查看某条命令的具体使用方法 # sqoop help 命令名 二.Sqoop 与 MySQL 1. 查询MySQL所有数据 ...

  7. vs code 初始化vue项目框架

    1.首先安装npm组件  下载地址:https://nodejs.org/en/ 安装完 2.配置环境变量 3.验证是否成功 node -v npm -v 4.替换npm 输入npm install ...

  8. Srapy 爬取知乎用户信息

    今天用scrapy框架爬取一下所有知乎用户的信息.道理很简单,找一个知乎大V(就是粉丝和关注量都很多的那种),找到他的粉丝和他关注的人的信息,然后分别再找这些人的粉丝和关注的人的信息,层层递进,这样下 ...

  9. Flask项目实战:创建电影网站-创世纪(1)

    以后要养成写博客的习惯,用来做笔记.本人看的东西很多很杂,但因为工作中很少涉及,造成看了之后就忘,或者看了就看了,但是没有融入的自己的知识体系里面. 写博客一方面是做记录,一方面是给这段时间业余学习的 ...

  10. 新技术新框架不断涌现,目前学习web前端开发都要掌握什么?

    web前端开发由网页制作演变而来,随着web2.0的发展,网页不再只是承载单一的文字和图片,各种丰富媒体让网页的内容更加生动,网页上软件化的交互形式为用户提供了更好的使用体验,这些都是基于前端技术实现 ...