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. 获取cpu真实型号

    感谢文洋兄的思路.亲测有效. [root@storage GetCpuType]# ./main.o Intel(R) Xeon(R) CPU C5528 @ 2.13GHz #include < ...

  2. 关于javacc的认识

    http://www.cnblogs.com/Gavin_Liu/archive/2009/03/07/1405029.html

  3. iOS项目冗余资源扫描脚本

    iOS项目冗余资源扫描脚本 随着iOS项目的版本不断迭代,app中冗余文件会越来越多,app size也持续增加,是时候需要对app冗余资源进行检测,对app进行瘦身. 使用方法: 1. 运行环境为m ...

  4. MySql 事务与锁

    事务介绍 首先,什么是事务?事务就是一段sql 语句的批处理,但是这个批处理是一个atom(原子),不可分割,要么都执行,要么回滚(rollback)都不执行. MySQL 事务主要用于处理操作量大, ...

  5. C++写#pragma warning(disable 4786)的作用

    C++编程时,在使用STL(C++标准模板库)的时候经常引发类似的错误,尤其是vector,map这类模板类,模板中套模板,一不小心就很长了. 当命名超过C++规定范围255字符时,就会产生这个名为d ...

  6. 5. Leetcode 448. Find All Numbers Disappeared in an Array

    Given an array of integers where 1 ≤ a[i] ≤ n (n = size of array), some elements appear twice and ot ...

  7. Jersey实现Restful服务

    jersey 是基于Java的一个轻量级RESTful风格的Web Services框架.以下我基于IDEA实现Restful完整Demo. 1.创建maven-web工程,后面就是正常的maven工 ...

  8. (4)UIView和父子控件

    IButton控件中除了有自身的属性之外还有继承的view的属性 内存地址一样,是同一个view来的,也就是最外层的view.

  9. 浅谈JavaScript和DOM中的类数组对象

    JavaScript是一门弱类型语言,它的数据类型分为两大类:简单数据类型(5种:Undefined.Null.Boolean.Number.String)和复杂数据类型(1种:Object).Obj ...

  10. HTML的学习笔记

    一.HTML的概述(了解) a.html是什么 : hypertext markup language 超文本标记语言           超文本:音频,视频,图片称为超文本..           ...