webdriver

爬虫之selenium模块

喜欢而已 提交于 2020-03-22 05:58:00
引入 selenium最初是一个自动化测试工具,而爬虫中使用它主要是为了解决requests无法直接执行JavaScript代码的问题 selenium本质是通过驱动浏览器,完全模拟浏览器的操作,比如跳转、输入、点击、下拉等,来拿到网页渲染之后的结果,可支持多种浏览器 from selenium import webdriver browser=webdriver.Chrome() browser=webdriver.Firefox() browser=webdriver.PhantomJS() browser=webdriver.Safari() browser=webdriver.Edge() 官网:http://selenium-python.readthedocs.io 安装 安装selenium: pip install selenium 下载驱动浏览器驱动:   有界面浏览器: Chrome , Firefox(geckodriver)   无界面浏览器: PhantomJS 验证: from selenium import webdriver driver=webdriver.Chrome() # 弹出谷歌浏览器 driver.get('https://www.baidu.com') driver.page_source 基本使用 from selenium

在做自动化测试之前你需要知道的什么是自动化测?

我怕爱的太早我们不能终老 提交于 2020-03-21 11:45:47
本文是转载“虫师”的文章http://www.cnblogs.com/fnng/p/3653793.html 因为我感觉这篇文章写的很好,但是没有收藏功能,所以在自己的博客转载 希望“虫师”老师能够谅解!在此感谢“虫师”老师的分享!!!!!!! 什么是自动化测?   做测试好几年了,真正学习和实践自动化测试一年,自我感觉这一个年中收获许多。一直想动笔写一篇文章分享自动化测试实践中的一些经验。终于决定花点时间来做这件事儿。   首先理清自动化测试的概念,广义上来讲,自动化包括一切通过工具(程序)的方式来代替或辅助手工测试的行为都可以看做自动化,包括性能测试工具(loadrunner、jmeter),或自己所写的一段程序,用于生成1到100个测试数据。狭义上来讲,通工具记录或编写脚本的方式模拟手工测试的过程,通过回放或运行脚本来执行测试用例,从而代替人工对系统的功能进行验证。   当然,我们更普遍的认识把“自动化测试”看做“ 基于产品或项目UI层的自动化测试”。 分层的自动化测试   这个概念最近曝光度比较高,传统的自动化测试更关注的产品UI层的自动化测试,而分层的自动化测试倡导产品的不同阶段(层次)都需要自动化测试。   相信测试同学对上面的金字塔并不陌生,这不就是对产品开发不同阶段所对应的测试么!我们需要规范的来做 单元测试同样需要相应的单元测试框架,如java的Junit

python自动化获取51job的职位

末鹿安然 提交于 2020-03-19 12:35:14
3 月,跳不动了?>>> 最近在学习python的自动化测试,跟着视频教程做了个利用chrome 驱动去招聘网站上获取了 成都 的 python 职位的相关信息。 请注意,不同的浏览器需要不同的驱动,chrome浏览器的驱动下载: https://chromedriver.storage.googleapis.com/index.html ,请根据自己的浏览器版本下载对应的驱动。 简单说下,如何根据html css获取相应的内容:更多详细的教程移步: http://www.python3.vip/doc/tutorial/selenium/02/ find_elements_by_class_name find_element_by_class_name 根据class样式名称选择元素 find_elements_by_tag_name 根据标签选择元素 find_element_by_id 根据id 选择元素 find_elements_by_css_selector 根据css样式选择 以下代码,只需要替换你自己的驱动路径,webdriver = webdriver.Chrome(r'你的驱动地址'),就可以立即跑起来了 # 自动化测试,爬取网站 import re import xlwt as xlwt from selenium import webdriver

jenkins、ant、selenium、testng搭建自动化测试框架

自作多情 提交于 2020-03-19 02:57:06
  如果在你的理解中自动化测试就是在eclipse里面讲webdriver的包引入,然后写一些测试脚本,这就是你所说的自动化测试,其实这个还不能算是真正的自动化测试,你见过每次需要运行的时候还需要打开eclipse然后去选择运行文件吗?没有吧!应为那样真的是很low的!下面说一下经理的两种自动化测试:一、将脚本写好,放在服务器,通过定时任务去执行,这个是针对每天或者一些时间段需要执行的任务去做的,但是运用比较少,之前是用来定时检查线上所有的接口开发的一套系统。二、就是本文讲的。   进入正文,先说一下我们的思想:     1、使用eclipse 加上webdriver 把我们的脚本写好。     2、所有的脚本不可能放在同一个文件夹里面,有的需要执行多次,但是有的只需要一次,这个我们通过testng去实现,在我们的testng框架里面这个能够轻松实现,所以我们就将脚本中加如了testng。     3、testng虽然能够将脚本很好的规划好,但是他不能够自动运行,我们必须每次打开运行,比较麻烦,所以我们就想到了我们经常用到构建项目的jenkins,所以我们就需要在现在的框架上引入jenkins。     4、引入后,如何将他们结合下面来仔细说说 一、需要的工具、包   1、eclipse 这里必须把环境变量什么的都配置好。    2、selenium 的jar包   3

Python妹子图爬虫实战项目【新手必学】

为君一笑 提交于 2020-03-18 19:54:14
作为Python的初学者,爬虫肯定是入门的不二选择,既能熟悉语法,又能通过爬虫了解一定的网络编程知识。 要想完美的食用本篇教程,首先你需要熟悉Python的基础语法以及基础的数据结构,之后最好了解Python面向对象编程,还有xpath的基本语法。 新手司机上路,请注意!:很多人学Python过程中会遇到各种烦恼问题,没有人解答容易放弃。为此小编建了个Python全栈免费答疑.裙 :七衣衣九七七巴而五(数字的谐音)转换下可以找到了,不懂的问题有老司机解决里面还有最新Python实战教程免非下,,一起相互监督共同进步! 爬虫的原理其实很简单,模仿人浏览网页并记录数据。 我们的目标网站—— www.mmjpg.com 如果你现在已经打开了这个网站,求求你们,把持住自己!!! 现在,让我们踩下油门,开始飙车!!! 我们的目的是保存每个妹子的图片,并以文件夹的形式保存在我们的电脑上。 首先我们分析这个网站的url,这是很重要的一步 打开首页 www.mmjpg.com 点击下一页,它的第二页是 http://www.mmjpg.com/home/2 ,这时我们把2改成1,是不是就可以跳转到第一页呢? 哇!!居然是404!!! 所以我们现在了解到,这个网站第一页为 www.mmjpg.com ,后面的页面为 http://www.mmjpg.com/home/n ,n是页码。 目前

和我一起学 Selenium WebDriver(7)——基础篇

萝らか妹 提交于 2020-03-18 18:49:39
3 月,跳不动了?>>> 昨天我们已经可以轻松移动鼠标了,距离拖拽只有一步之遥。 其实这就是一层窗户纸,捅破它就搞定了,之前做的操作可以说都是单步操作:移动鼠标、点击页面元素、弹出窗口等等;而拖拽操作就不行了,他需要一连串连贯的动作配合起来:mousedown、mousemove、mouseup,缺了哪个都不行,顺序不对也不行。 【1、如何进行拖拽】 这时候我们就需要用到 org.openqa.selenium.interactions.Actions 这个类了,它专门用来做动作组合的。 Actions 中有若干方法,可以让你很容易的生成 鼠标、按键的操作集合。 例如: clickAndHold + moveToElement + release 就可以组合成一套拖拽的操作; 详细内容还请查看 Selenium 的 javadoc: http://selenium.googlecode.com/svn/trunk/docs/api/java/index.html 生成操作组合后,利用 build 方法可以得到一个有效的 Action 对象;最后使用 perform 方法执行就可以了。 和昨天测试鼠标移动的情况类似,还是 FireFox 问题最大, IE8 有小问题, Chrome 测试最正常。 FireFox:使用 moveToElement 方法时,效果同昨天使用

和我一起学 Selenium WebDriver(5)——基础篇

廉价感情. 提交于 2020-03-18 18:49:18
3 月,跳不动了?>>> 前面的学习已经让我们可以轻松的运行js、点击节点,下面该学习如何控制 alert、confirm 和 弹出窗口这些了 【1、如何处理 confirm 和 alert】 处理 confirm、alert 其实很简单,只需要利用 WebDriver 的 switchTo().alert() 方法就可以轻松切换到 alert 对象 Alert,进行控制。 我们直接利用 高级增删改查 的Demo 测试 alert 和 confirm,顺便还使用 sendKeys 进行文字录入的操作 package lesson5; import static org.junit.Assert.*; import org.junit.AfterClass; import org.junit.BeforeClass; import org.junit.Test; import org.openqa.selenium.Alert; import org.openqa.selenium.JavascriptExecutor; import org.openqa.selenium.Keys; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; import org.openqa

和我一起学 Selenium WebDriver(3)——基础篇

六眼飞鱼酱① 提交于 2020-03-18 18:42:47
3 月,跳不动了?>>> 【慎用 findElement】 今天本打算研究一下 异步加载的延迟测试,结果一不留神发现了 findElement 的问题。 不敢说这是个Bug,不排除是自己学艺不精,暂且把问题抛出来,希望大家能给些意见。 1、问题描述: 使用 FireFoxDriver ,用 findElement 去查找页面上不存在的元素时,会导致程序死在 findElement 上,停滞不前,不会继续执行后面的代码 即使在 WebDriverWait 的 until 内使用也会导致锁死,而且 until 内的代码只会执行一次, timeout 完全失效 此问题在 IE、Chrome 上不会出现,会正常报错 换成 findElements 后可以正常工作 换成 用 js 方法获取对象 可以正常工作 2、问题跟踪 经过对源码的跟踪,发现是在 org.openqa.selenium.remote.HttpCommandExecutor 的 private HttpResponse fallBackExecute 方法内 执行 return client.execute(targetHost, httpMethod, context); 后就停滞了... 无任何异常抛出 3、测试代码 package lesson3; import java.util.List; import org

webdriverwait方法

这一生的挚爱 提交于 2020-03-18 14:18:12
显示等待语法 WebDriverWait(driver,timeout,poll_frequency,ignored_exceptions) driver: 传入WebDriver实例,即webdriver.Chrome() timeout: 超时时间,等待的最长时间(同时要考虑隐性等待时间) poll_frequency: 调用until或until_not中的方法的间隔时间,默认是0.5秒 ignored_exceptions: 忽略的异常,如果在调用until或until_not的过程中抛出这个元组中的异常, 则不中断代码,继续等待,如果抛出的是这个元组外的异常,则中断代码,抛出异常。默认只有NoSuchElementException WebDriverWait 的两种等待方式 until(method,message) method: 在等待期间,每隔一段时间(__init__中的poll_frequency)调用这个传入的方法,直到返回值不是False message: 如果超时,抛出TimeoutException,将message传入异常 until_not(method,message) 与until相反,until_not是当某元素出现或什么条件成立则继续执行, until_not是当某元素消失或什么条件不成立则继续执行,参数也相同,不再赘述。 调用方法

WebDriver的定位元素方法

允我心安 提交于 2020-03-18 11:54:26
如果把页面上的元素看作人的话,在现实世界如何找到某人呢?方法有三: 一、通过人本身的属性,例如他的姓名,手机号,身份证号,性别,这些可区别他人的属性。在web页面上的元素也有这些属性,例如,id、name、class name、tag name等。 二、在找查某人的时候可以通过位置属性,例如,x国、x市、x路、x号。Xpath和CSS就提供了这种以标签名为层级关系的定位方式。 三、可以借助相关他人的属性来找到某人,例如,我没有小明的联系方式,但我有他爸爸的手机号,那么通过他爸爸手机号也可以找到小明。Xpath和CSS同样提供通过相关元素来查找最终元素的方式。 WebDriver提供多种元素定位方法,下面用Python语言来介绍这些元素定位: 1、id定位 HTML规定id属性在HTML文档中必须是唯一的,这类似于公民的身份证号。webdriver提供的id定位方法就是通过元素的id属性来查找元素。例如通过id定位浏览器下百度输入框与百度搜索按钮,用法如下: find_element_by_id("kw") 百度输入框 find_element_by_id("su") 百度搜索 即find_element_by_id()方法通过id属性来定位元素。 2、name定位 HTML规定name来指定元素的名称,就像人的姓名,所以不是唯一的。如通过name来定位百度输入框: find