selenium 学习整理

初学者,如果有不当得地方请指出,非常感谢。

准备事项:

1. Python 安装包

  安装Python,并勾选添加环境变量。

  安装完成后,打开dos窗口,输入python,看能否进入python命令行模式。如果不能就手动添加一下环境变量。

2. Chrome 安装包(其他浏览器也可以,Chrome支持得比较好;如果用IE得话,需要再设置--安全,关闭浏览器得保护模式,一个四个)

3. 浏览器版本对应得ChromeDriver.exe (去浏览器官网可以找到,必须和浏览器版本对应)

  不需要安装,直接复制到python安装目录下就好。

4. Selenium 安装包

  解压到 Python\Python35\Lib\site-packages 。注意:最好直接解压到该目录下,如果是拷贝得话,要确认打开selenium文件夹,直接看到init文件。

  验证:打开dos窗口,进入python 命令行模式,输入 from selenium imprt webdriver (没报错得话证明解压得没问题,python能直接识别该文件);

  再次输入 webdriver.Chrome() ,期望结果是启动浏览器。证明浏览器和对应得驱动是无误得。

5. 安装Pycharm (其实就是一编写工具,用自带得也行)

开始喽:

from selenium import webdriver  # 从selenium 中将webdriver 导入当前

driver = webdriver.Chrome()     # driver 是变量名,便于后面使用,起什么名都行

driver.get("http://localhost")    # 打开指定网址

driver.maximize_window()      #字面意思,最大化浏览器窗口,目前学习阶段没看到有啥用==

driver.implicity_wait(30)    # 隐式等待,比如你提交表单得时候,服务需要时间才能给到你响应,这个时候如果不让浏览器等待,直接执行下面得语句可能就会得到错误得结果。这个语句是为了便于阅读加到这。Q:这个语句是必须得么?我去百度下。。。A: 待更新。。。没找到答案,

顺便提一下,还有一种是显示等待time.sleep(5) 对于浏览器弹窗得行为,隐式等待不起作用。

今天主要针对网站得登录注册自动化。界面是下面这样得:

from selenium import webdriver

driver = webdriver.Chrome()
driver.get("http://localhost/")
driver.maximize_window()
driver.find_element_by_link_text("注册").click()
# find_element_by_ 通过各种方式获取目标节点,click()模拟用户点击

点击按钮这块有个坑。点击后,会新打开一个页面。而Selenium 默认针对第一个tab页。这个时候有两种方式,一种是使用switch切换窗口;一种是清除页面中新打开窗口target属性,然后再点击。下面分别写一下。

 from selenium import webdriver

 driver = webdriver.Chrome()
driver.get("http://localhost/")
driver.maximize_window()
driver.find_element_by_link_text("注册").click()
# find_element_by_ 通过各种方式获取目标节点,click()模拟用户点击 current_tab = driver.current_window_handle
# current_tab 是首页
all_tab = driver.window_handles
for i in all_tab:
if i == current_tab:
driver.close()
else:
driver.switch_to.window(i)

这个是使用switch方式切换,并把另一个tab页关闭,这样就保持了浏览器一直一个tab页。

 from selenium import webdriver

 driver = webdriver.Chrome()
driver.get("http://localhost/")
driver.maximize_window() js = 'document.getElementsByClassName("site-nav-right fr")[0].childNodes[3].removeAttribute("target")'
# 注意单双引号
driver.execute_script(js)
driver.find_element_by_link_text("注册").click()
# find_element_by_ 通过各种方式获取目标节点,click()模拟用户点击

中间有一句JavaScript代码,这个需要在浏览器调试模式中,逐级找到目标节点,然后执行清除属性,最好是实验好了,直接粘到python代码中。

== 先去吃饭,晚上回来接着写。一边写一边练习一边问自己为什么。感觉棒棒哒~

Selenium 学习笔记(一)的更多相关文章

  1. selenium 学习笔记 ---新手学习记录(1) 问题总结

    说明:每次学习各种语言时,环境搭建访问国外网址最头疼了,现在只要是工具下载好放到自己网盘,可以随时用. 1.首先工具准备,selenium需要用到的 下载地址 访问密码 ff8f 2.我选择的语言时j ...

  2. selenium学习笔记(简单的元素定位)

    收拾一下心情开始新的一周工作 继续是selenium的学习.配置成功后 由于所有操作都是建立在页面元素基础上的.所以下来就是学习定位元素 首先是基础的定位.就使用博客园首页搜索框为例: 下面是代码: ...

  3. selenium学习笔记(selenium下载安装)

    博主自己捣鼓的接口框架先到这里 等工作上正式开始使用再后续完善需求 还是继续学习python.学编程就直接动手写 就想看看python+selenium的组合 什么都不多说.先下载安装 博主这里已经安 ...

  4. Selenium学习笔记之外部化相关测试数据---xml

    我们也可以用xml来定义一个信息更为丰富的UIMap.xml文件,比如,额外还添加控件所属的页,控件的类型,然后解析构建一个XMLParser类来读取相应的值. <?xml version=&q ...

  5. selenium 学习笔记 ---新手学习记录(9) 问题总结(java)

    1.百度搜索目标--实例 boolean flag; //点击次数 int shcs=3; int i=0; //窗口焦点控制 String detailWindowHandle = null; // ...

  6. selenium 学习笔记 ---新手学习记录(2) 问题总结

    今天研究了下ie.chrome.firefox浏览器执行脚本 1.首先firefox下执行时,我是安装在d盘了,所以要更改路径 //如果火狐浏览器没有默认安装在C盘,需要制定其路径 System.se ...

  7. python + selenium 学习笔记 -摘要

    一.浏览器操作相关 from selenium import webdriver driver = webdriver.Chrome() driver.maximize_window() # 窗口最大 ...

  8. Selenium学习笔记

    Selenium是一个强大的自动化测试工具,它的核心思想是通过JavaScript嵌入的方式直接操纵页面的DOM来模拟手工测试工作. Selenium IDE,一个Firefox插件,可以在Firef ...

  9. selenium学习笔记(智能等待)

    博主在尝试对百度首页用selenium完成自动登录的功能 反复多次尝试元素定位方法也未写错.最后发现问题原因: 脚本运行速度快于页面加载速度 如百度首页登录例子.脚本已经开始寻找登录弹窗 但是页面仍在 ...

随机推荐

  1. 发票OCR识别/票据OCR自动识别

    对于一些大的集团公司来说,分散式财务管理模式管理效率不高,管理成本相对较高,同时也制约了集团企业发展战略的实施,因而需要建设财务共享中心.一个企业想建造财务共享中心,面临的难题是大量的数据采集和信息处 ...

  2. MyBatis 详解(一对一,一对多,多对多)

    1.什么是MyBatis? MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且 ...

  3. javascript实现朴素贝叶斯分类与决策树ID3分类

    今年毕业时的毕设是有关大数据及机器学习的题目.因为那个时间已经步入前端的行业自然选择使用JavaScript来实现其中具体的算法.虽然JavaScript不是做大数据处理的最佳语言,相比还没有优势,但 ...

  4. JavaScript系统学习小结——变量、作用域和内存问题

    趁着写完小论文还未彻底消散的学习氛围,开始着重巩固自己JavaScript的基础知识,为秋招做最基本的准备. 变量:Js的变量可能保存两种不同数据类型的值:基本类型值和引用类型值. 基本类型包括:Un ...

  5. HDOJ-2009 求数列的和

    Problem Description 数列的定义如下:数列的第一项为n,以后各项为前一项的平方根,求数列的前m项的和.   Input 输入数据有多组,每组占一行,由两个整数n(n<10000 ...

  6. Java集合框架Collections【List/Set】

    1.基本介绍: 集合就是存放对象的,他比数组好的一点就是他一开始不清楚自己长度 容器一般是分为很多种的,很多的容器在一起然后进过断的抽象和抽取就成了一个体系,我们称之为集合框架 我们看体系首先是看顶层 ...

  7. python进阶(3):模块和包

    之前两天我们介绍了一些比较常用的模块,而我也说过会讲解什么是模块,今天我们就来分析分析模块和包,模块我们现阶段使用还可以而包的话现阶段我们基本很少会用到包,学的不是很清楚也没关系这些东西都是用的多了也 ...

  8. 脱壳练习之bitarts 5.0

    运行界面 一开始不是PUSHAD,这里我们跟到PUSHAD指令处,按F7执行该指令,接着在寄存器窗口中定位到ESP寄存器的值,在其上面单击鼠标右键选择-Follow in Dump. 仅允许非商业转载 ...

  9. MATLAB垂直搜索图片中的白段

    function [ top, bottom, middle, len ] = classify_by_vertical_white_belt( img ) % 垂直搜索图片中的白段, 记录具体信息. ...

  10. 机器学习笔记——拉格朗日乘子法和KKT条件

    拉格朗日乘子法是一种寻找多元函数在一组约束下的极值方法,通过引入拉格朗日乘子,可将有m个变量和n个约束条件的最优化问题转化为具有m+n个变量的无约束优化问题.在介绍拉格朗日乘子法之前,先简要的介绍一些 ...