虫师selenium_python 学习:原文档 下载:http://download.csdn.net/detail/fnngj/6041329

具体参看selenium_python API : http://selenium.googlecode.com/git/docs/api/py/api.html#common

#coding=utf-8
'''
Created on 2014-5-30

@author: jyp
'''
from selenium import webdriver
import os
import time
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.action_chains import ActionChains

'''
元素定位,添加等待时间,浏览器操作,操作测试对象
from selenium import webdriver
import time
driver = webdriver.Firefox()    
driver.get("http://www.baidu.com")

driver.maximize_window()
#driver.set_window_size(1000, 800)
#driver.set_window_position(22, 33)
# 通过id,可以
driver.find_element_by_id('kw1').send_keys("selenium")

# 可以
#driver.find_element_by_xpath("//input[@id='kw1']").send_keys("selenium")

# 可以
#driver.find_element_by_link_text("贴 吧").click()

# 可以
#driver.find_element_by_partial_link_text("贴").click()
driver.implicitly_wait(2)
time.sleep(5)
# 不可以
#driver.find_element_by_name("wd").send_keys("selenium")
# 清空form内容
driver.find_element_by_id("kw1").clear()
# 不可以
#driver.find_element_by_tag_name("input").send_keys("selenium")

# 可以
#driver.find_element_by_css_selector("#kw1").send_keys("selenium")
#driver.find_element_by_class_name("btn").click()
# 通过click
driver.find_element_by_id('su1').click()
# 通过submit
driver.find_element_by_id('su1').submit()

time.sleep(10)
print '后退'
driver.back()
time.sleep(10)
print '前进'
driver.forward()

'''
'''
键盘事件模拟
from selenium import webdriver
import time

driver = webdriver.Firefox()
url = "https://passport.csdn.net/account/login"
driver.get(url)
time.sleep(5)
username = driver.find_element_by_id("username")
# 清除表单原有信息
#username.clear()
username.send_keys(Keys.TAB)
driver.implicitly_wait(5)
username.send_keys("956180488@qq.com")
driver.implicitly_wait(5)
pswd = driver.find_element_by_id("password")
pswd.send_keys("123456")
driver.implicitly_wait(5)
submit = driver.find_element_by_class_name('logging')
#submit.click()
submit.send_keys(Keys.ENTER)

'''
'''
# 模拟键盘组合应用
from selenium import webdriver
import time

driver = webdriver.Firefox()
url = 'http://www.baidu.com'
driver.get(url)
driver.maximize_window()
keywords = driver.find_element_by_id("kw1")
keywords.send_keys('selenim')
time.sleep(5)
keywords.send_keys(Keys.CONTROL, 'a')
time.sleep(5)
keywords.send_keys(Keys.CONTROL, 'x')
time.sleep(5)
keywords.send_keys(u'姬永攀')
time.sleep(5)
clickButton = driver.find_element_by_id('su1')
clickButton.send_keys(Keys.ENTER)
time.sleep(10)
'''

'''
# 模拟鼠标事件
# 右键单击事件

from selenium import webdriver
import time

driver = webdriver.Firefox()
url = "https://passport.csdn.net/account/login"
driver.get(url)
time.sleep(5)
username = driver.find_element_by_id("username")
# 清除表单原有信息
username.clear()
driver.implicitly_wait(5)
username.send_keys("956180488@qq.com")
driver.implicitly_wait(5)

pswd = driver.find_element_by_id("password")

# 右键单击鼠标
rightclick = ActionChains(driver)
rightclick.context_click(pswd).perform()

# 鼠标双击事件 doubleclick(element)
# 鼠标拖放事件 drag_and_drop(element, target) // element ,target 分别为原位置和目标位置
'''
'''
# 定位一组元素
from selenium import webdriver
import os
import time

driver = webdriver.Firefox()
#file_path = 'file:///' + os.path.abspath('test.html')
file_path = 'file:///C:/Users/jyp/Desktop/test.html'
#os.path.abspath('C:/Users/jyp/Desktop/test.html')
driver.get(file_path)
# 方法一
#inputs = driver.find_elements_by_tag_name('input')
#for input in inputs:
#    if input.get_attribute('type') == 'checkbox':
#        input.click()
#    time.sleep(5)

# 方法二
checkboxs = driver.find_elements_by_css_selector('input[type=checkbox]')
for checkbox in checkboxs:
    checkbox.click()
    time.sleep(3)
print len(checkboxs)
# 最后一个chcecbox去掉
checkboxs.pop().click()
print len(checkboxs)
time.sleep(3)
'''
'''
# 多层框架定位 (frame)
driver = webdriver.Firefox()
url = "file:///C:/Users/jyp/Desktop/test.html"
driver.get(url)
driver.implicitly_wait(10)
driver.switch_to_frame('f1')
driver.switch_to_frame('f2')
driver.find_element_by_id('kw1').send_keys(u"姬永攀")
time.sleep(5)
driver.find_element_by_id('su1').click()
time.sleep(3)
driver.quit()
'''

'''
# 层级定位
driver = webdriver.Firefox()
url = "file:///C:/Users/jyp/Desktop/test.html"
driver.get(url)
link1 = driver.find_element_by_link_text('Link1')
link1.click()
WebDriverWait(driver, 10).until(lambda the_driver: the_driver.find_element_by_id('dropdown1').is_displayed(), 'link1 displayed')
menu1 = driver.find_element_by_id('dropdown1')
item1 = menu1.find_element_by_link_text('Action')

webdriver.ActionChains(driver).move_to_element(item1).perform()
time.sleep(10)
driver.quit()
'''
'''
# 文件上传功能
driver = webdriver.Firefox()
url = "file:///C:/Users/jyp/Desktop/test.html"
driver.get(url)
upload = driver.find_element_by_name('file')
upload.send_keys("D:\\vmlinuz")
time.sleep(10)
driver.quit()
'''

'''
# 邮箱上传文件功能////////////未成功,好难定位
driver = webdriver.Firefox()
url = "http://mail.163.com/"
driver.get(url)
driver.maximize_window()
time.sleep(3)
username = driver.find_element_by_id('idInput')
username.clear()
username.send_keys("yongpan66")
time.sleep(3)
pswd = driver.find_element_by_id('pwdInput')
pswd.send_keys('pan0211')
submit1 = driver.find_element_by_id('loginBtn')
submit1.click()

driver.implicitly_wait(20)
writeletter = driver.find_element_by_xpath('/html/body/div/nav/div/ul/li[2]/span[2]')

writeletter.click()
print 'click write letter'
time.sleep(5)
#receiver = driver.find_element_by_xpath('/html/body/div[2]/div/div[3]/div/section/header/div/div/div/div[2]')
#receiver = driver.find_element_by_xpath('//input[@id=_mail_emailinput_2_388]')
#receiver.send_keys('956180488@qq.com')
time.sleep(5)
theme = driver.find_element_by_class_name('nui-editableAddr-ipt')
theme.send_keys('test selenium upload')
time.sleep(5)
addfile = driver.find_element_by_class_name('O0')
addfile.send_keys('testupload.txt')

driver.switch_to_frame("APP-editor-iframe")
time.sleep(5)
lettercontent = driver.find_element_by_class_name('nui-scroll')
lettercontent.send_keys(u'你好,姬永攀')
time.sleep(10)
sendletter = driver.find_element_by_id('_mail_icon_47_193')
sendletter.click()
time.sleep(30)
driver.quit()
'''

'''
# 下拉框选择
driver = webdriver.Firefox()
url = "file:///C:/Users/jyp/Desktop/test.html"
driver.get(url)
driver.maximize_window()
time.sleep(5)
select1 = driver.find_element_by_id('ShippingMethod')
item1 = select1.find_element_by_xpath('//option[@value=9.03]')
item1.click()
'''
'''
# 下拉框选择, 切换到弹出框(警告框)
driver = webdriver.Firefox()
url = "http://www.baidu.com"
driver.get(url)
driver.maximize_window()
driver.find_element_by_link_text(u'搜索设置').click()
select1 = driver.find_element_by_id('nr')
time.sleep(5)
select1.find_element_by_xpath('//option[@value=20]').click()
time.sleep(5)
driver.find_element_by_xpath('//input[@value="保存设置"]').click()
time.sleep(5)
driver.switch_to_alert().accept()
time.sleep(5)
driver.find_element_by_id('kw1').send_keys(u'陈阳sb')
time.sleep(5)
driver.find_element_by_id('su1').click()
time.sleep(10)
driver.quit()
'''

'''
# 执行js脚本
driver = webdriver.Firefox()
driver.get("http://email.163.com/#from=163nav_icon")
#给用户名的输入框标红
js="var q=document.getElementById(\"userNameIpt\");q.style.border=\"1px solid red\";"
#调用 js
driver.execute_script(js)
time.sleep(3)
driver.find_element_by_id("userNameIpt").send_keys("username")
driver.find_element_by_id("pwdInput").send_keys("password")
driver.find_element_by_id("btnSubmit").click()
time.sleep(3)
driver.quit()
'''

'''
# 控制浏览器滚动条
#访问百度
driver=webdriver.Firefox()
driver.get("http://www.baidu.com")
driver.maximize_window()
#搜索
driver.find_element_by_id("kw1").send_keys("selenium")
driver.find_element_by_id("su1").click()
time.sleep(3)
#将页面滚动条拖到底部
js="var q=document.documentElement.scrollTop=10000"
driver.execute_script(js)
time.sleep(3)
#将滚动条移动到页面的顶部
js="var q=document.documentElement.scrollTop=0"
driver.execute_script(js)
time.sleep(3)
driver.quit()

'''

selenium_python学习的更多相关文章

  1. 从直播编程到直播教育:LiveEdu.tv开启多元化的在线学习直播时代

    2015年9月,一个叫Livecoding.tv的网站在互联网上引起了编程界的注意.缘于Pingwest品玩的一位编辑在上网时无意中发现了这个网站,并写了一篇文章<一个比直播睡觉更奇怪的网站:直 ...

  2. Angular2学习笔记(1)

    Angular2学习笔记(1) 1. 写在前面 之前基于Electron写过一个Markdown编辑器.就其功能而言,主要功能已经实现,一些小的不影响使用的功能由于时间关系还没有完成:但就代码而言,之 ...

  3. ABP入门系列(1)——学习Abp框架之实操演练

    作为.Net工地搬砖长工一名,一直致力于挖坑(Bug)填坑(Debug),但技术却不见长进.也曾热情于新技术的学习,憧憬过成为技术大拿.从前端到后端,从bootstrap到javascript,从py ...

  4. 消息队列——RabbitMQ学习笔记

    消息队列--RabbitMQ学习笔记 1. 写在前面 昨天简单学习了一个消息队列项目--RabbitMQ,今天趁热打铁,将学到的东西记录下来. 学习的资料主要是官网给出的6个基本的消息发送/接收模型, ...

  5. js学习笔记:webpack基础入门(一)

    之前听说过webpack,今天想正式的接触一下,先跟着webpack的官方用户指南走: 在这里有: 如何安装webpack 如何使用webpack 如何使用loader 如何使用webpack的开发者 ...

  6. Unity3d学习 制作地形

    这周学习了如何在unity中制作地形,就是在一个Terrain的对象上盖几座小山,在山底种几棵树,那就讲一下如何完成上述内容. 1.在新键得项目的游戏的Hierarchy目录中新键一个Terrain对 ...

  7. 《Django By Example》第四章 中文 翻译 (个人学习,渣翻)

    书籍出处:https://www.packtpub.com/web-development/django-example 原作者:Antonio Melé (译者注:祝大家新年快乐,这次带来<D ...

  8. 菜鸟Python学习笔记第一天:关于一些函数库的使用

    2017年1月3日 星期二 大一学习一门新的计算机语言真的很难,有时候连函数拼写出错查错都能查半天,没办法,谁让我英语太渣. 关于计算机语言的学习我想还是从C语言学习开始为好,Python有很多语言的 ...

  9. 多线程爬坑之路-学习多线程需要来了解哪些东西?(concurrent并发包的数据结构和线程池,Locks锁,Atomic原子类)

    前言:刚学习了一段机器学习,最近需要重构一个java项目,又赶过来看java.大多是线程代码,没办法,那时候总觉得多线程是个很难的部分很少用到,所以一直没下决定去啃,那些年留下的坑,总是得自己跳进去填 ...

随机推荐

  1. DG之主库、备库切换(物理备库)

    DG之主库.备库切换 一.开库与关库顺序 开库顺序 先启备库,再启主库(启动监听.打开告警日志) 关库顺序 先关主库,再关备库 二.主备库切换 1.操作过程一览 步骤1:启动备库.监听.告警: 步骤2 ...

  2. UI设计师不可不知的安卓屏幕知识

    不少设计师和工程师都被安卓设备纷繁的屏幕搞得晕头转向,我既做UI设计,也做过一点安卓界面布局,刚好对这块内容比较熟悉,也曾在公司内部做过相关的讲座,在此,我将此部分知识重新梳理出来分享给大家! 1.了 ...

  3. 图片延迟加载并等比缩放,一个简单的JQuery插件

    使用方法: $(".viewArea img").zoom({height:74,width:103}); (function($){ $.fn.zoom = function(s ...

  4. java SecurityManager

    ---- 众所周知,Java语言具有完善的安全框架,从编程语言,编译器.解释程序到Java虚拟机,都能确保Java系统不被无效的代码或敌对的编译器暗中破坏,基本上,它们保证了Java代码按预定的规则运 ...

  5. ASP.NET后台自定义导出Excel

    关于导出,属于老生常谈了,下面就总结下我自己遇到的一些导出吧. 1.使用Excel组件进行导出(需要安装Microsoft Office Excel). 下面为代码,希望可以帮助别人. 1)准备数据源 ...

  6. iOS开发那些事儿(四)the dark arts of the Objective-C runtime

    一."Black Magic":Method Swizzling 利用 Runtime 特性把一个方法的实现与另一个方法的实现进行替换,也可以用runtime的四维理解——修改Di ...

  7. javaweb一周总结(菜鸟)

    我的试用期开始了. 这是我的第一篇博客,这也是我作为java工程师的第六天,主要是为了记录一周内出现的问题以及一些工作上的解答,吐槽一句工作的确和想的不一样之后直接记录下吧. 由于拥有工作平台看不到底 ...

  8. C++ Primer 读书笔记:第11章 泛型算法

    第11章 泛型算法 1.概述 泛型算法依赖于迭代器,而不是依赖容器,需要指定作用的区间,即[开始,结束),表示的区间,如上所示 此外还需要元素是可比的,如果元素本身是不可比的,那么可以自己定义比较函数 ...

  9. Web应用的部署

    本文将介绍一些Web应用的部署: 部署规则 要成功地部署一个Web应用,必须遵循以下目录结构. 1.WEB-INF一定要直接放到应用上下文(Webapp)之下. 2.classes目录必须直接放在WE ...

  10. CSS垂直居中解决方案

    问题场景 应用的地方比较普遍,这里有两个赤裸裸的栗子:   也有很多流行的方案,这里只针对各种方案的适用场景来做一些分析 问题抽象 其实,垂直居中问题可以简化成这样:一个容器HTML元素(#conta ...