1,from time import sleep(先引入关键词)

sleep(5)       (就可以使用这个命令了)

可以停止页面5秒

1-1.

等待页面元素出现的时间(即没出现时,等待元素出现)

在头部加上:

driver=webdriver.Firefox()

driver.implicitly_wait (10)#显式等待

2,定位的语法:

driver.find_element_by_id('kw')

3, A=driver.find_element_by_id('kw'),get_attribute('属性')==”值”

验证元素的属性。

返回ture flase

if driver.find_element_by_id('kw').get_attribute('autocomplete') == 'off':

print "TURE ,百度按钮找到了 "

else:

print  "no"

4,定位P标签 只有文字的方法

//div[@class=’suggert’]/p[contatiotains(text(),‘八达岭长城’)]

5,指定一个浏览器或驱动

driver= webdriver.Firefox(executable_path="C:\Program Files (x86)\Mozilla Firefox\firefox.exe")

dr=webdriver.Chrome(executable_path = '/Library/Python/2.7/chromedriver')

6,显示元素的出现等待: (pdf 4.7)

from selenium import webdriver

from selenium.webdriver.support.ui  import WebDriverWait

driver = webdriver.Firefox()

driver.get("http://www.baidu.com")

input_=driver.find_element_by_id("kw")

element = WebDriverWait(driver,5,0.5).until(

lambda driver :input_.is_displayed())

print element

4.9 iframe的切换

dr.switch_to_frame('iframeUploadMaterialImage') #可自动识别ID OR name

dr.switch_to_default_content()#切回来

4.10 多窗口的切换

7,验证并且不会中止下面代码的执行:

#coding=utf-8

from selenium import webdriver

dr= webdriver.Firefox()

dr.get('http://www.baidu.com')

try:
 dr.find_element_by_id('1kw').send_keys('selenium')

dr.find_element_by_id('su').click()
except :
    print "oh no"   #上面有异常打印这个

exit() #加入这个的话就直接退出程序,不执行下面的用例

else :
    print "oh no"   #上面正常打印这个

#找不到按钮也会继续执行下面的动作不会中断

dr.quit()

抛出错误就停止可以用assert(看python笔记本第17条)

7-1验证断言写法

B=3

C=3

try:

A=B+C

assert(A==6),"错误信息"

except AssertionError,msg:

print msg

else:

print "PASS"

下面是简写:

try:

A=B+C

assert(A==6)

except :

print “错误信息”

else:

print "PASS"

8.参数化的方法 5.3.2

读取text文件并做分隔的,如:账号密码的登录

9.一个 python获取当前时间 数据格式化的例子:

例子一:

这个是正确主流的方法:

#coding: utf-8

import datetime  #引入类

# 获取当前的时间

today = datetime.date.today()

ab= 'My age is'+ str(today)

#编写标题

dr.find_element_by_name("title").send_keys(ab)

#得出来的日期是字符串的类型,注意字符串格式化的方法%s

例子二:

只是把数据类型变字符串的,使用str()

#coding: utf-8

import datetime  #引入类

# 获取当前的时间

today = datetime.date.today()

ab=today

print ab

#编写标题

dr.find_element_by_name("title").send_keys(str(ab))

#使用python的字符串格式化,str()方式,把日期变成字符格式,send_keys正常。

例子三:

#coding: utf-8

import datetime  #引入类

# 获取当前的时间

today = datetime.date.today()

ab= 'My age is %s' % today

#编写标题

dr.find_element_by_name("title").send_keys(ab)

#得出来的日期是字符串的类型,注意字符串格式化的方法%s

11,获取对象的属性 和获取标签集的方法

inputs = driver.find_elements_by_tag_name('input')

#然后循环遍历出data-node 为594434493的元素,单击勾选

for input in inputs:

if input.get_attribute('data-node') == '594434493':

input.click()

......

12,警告窗 4-11

#接收弹窗driver.switch_to_alert().accept()

13,当send_keys中文的时候报错,

可以在中文前面加个u即可

Send_keys(u”你好”)

14, 4-3-1

is_displayed() 设置该元素是否用户可见

15,

dr.quit()

退出并关闭窗口的每一个相关的驱动程序,它还有个类似的表弟。

dr.close()

关闭当前窗口 ,用哪个看你的需求了。

16,,清除文本,如果是一个文件输入框

clear()

17,模拟 下页 按键 pg DN (可以解决chrome不可以拖动浏览器的问题)

dr.find_element_by_xpath("/html/body").send_keys(Keys.PAGE_DOWN)

模拟 上页 按键

dr.find_element_by_xpath("/html/body").send_keys(Keys.PAGE_UP)

18.chrome 使用本来的浏览条滚动命令无法滚动 的解决方法

参考网: (亲测OK)http://blog.csdn.net/sinat_21302587/article/details/54341020?locationNum=1&fps=1

19,判断复选框有没有选中的API

# 点击后,判断元素是否为选中状态
r = driver.find_element_by_id("boy").is_selected()

参考网站:http://www.cnblogs.com/yoyoketang/p/6128675.html

20,获取标签的属性判断bool值

Dr.find_element_by_xpath(~).get_ attribute(“CLASS”)==”123”

返回是bool值   ture or flase

22,双层定位

多用于下拉框的定位:

先定位下拉框,再xpath定位下拉框下面的选项

21,做数据分离的时候,从excel取出来的数据,无法放入send_keys API里面去 执行

解决过程:

从excel取出来的数据 type类型是str的 无法send_keys。提示无法解码

但是先把他转成unicode格式再放进去就可以send_keys了

后面发现,原来在函数那边做了utf-8格式转换,不转换的话可以直接调用

22. page_source

获取到页面源码(前端代码)

用法: element.page_source

参考: https://www.cnblogs.com/yoyoketang/p/6512604.html

selenium笔记2017的更多相关文章

  1. selenium笔记(1)

    selenium笔记(1) 一.关闭页面:1.driver.close() 关闭当前页面2.driver.quit() 退出整个浏览器 二.定位元素:1.find_element_by_id: 根据i ...

  2. Python+Selenium笔记(九):操作警告和弹出框

    #之前发的 driver.switch_to_alert() 这句虽然可以运行通过,但是会弹出警告信息(这种写法3.x不建议使用)  改成 driver.switch_to.alert就不会了. (一 ...

  3. Python+Selenium笔记(一):环境配置+简单的例子

    #环境配置基于windows操作系统 #学习selenium要有一些HTML和xpth的基础,完全不会的建议先花点时间学点基础(不然元素定位,特别是xpth可能看的有点懵) #HTML :  http ...

  4. Python 爬虫 selenium 笔记

    1. selenium 安装, 与文档 pip install selenium Selenium with Python中文翻译文档 selenium官网英文文档 2. selenium 的第一个示 ...

  5. Selenium 笔记

    1. 截屏:get_screenshot_as_file(“C:\\b1.jpg”) 2. 退出:(1).close----关闭当前窗口 (2).quit()-----用于结束进程,关闭所有的窗口 一 ...

  6. Python+Selenium笔记(十八):持续集成jenkins

    (一)安装xmlrunner 使用Jenkins执行测试时,测试代码中会用到这个模块. pip install xmlrunner (二)安装jenkins (1)   下载jekins https: ...

  7. Python+Selenium笔记(十七):操作cookie

    (一)方法 方法 简单说明 add_cookie(cookie_dict) 在当前会话中添加cookie信息 cookie_dict:字典,name和value是必须的 delete_all_cook ...

  8. Python+Selenium笔记(十六)屏幕截图

    (一) 方法 方法 简单说明 save_screenshot(filename)   获取当前屏幕截图并保存为指定文件 filename:路径/文件名 get_screenshot_as_base64 ...

  9. Python+Selenium笔记(十五)调用JS

    (一) 方法 方法 简单说明 execute_async_script(script, args) 异步执行JS代码 script:被执行的JS代码 args:js代码中的任意参数 execute_s ...

随机推荐

  1. vue中实现中,自动补全功能

    知识点:利用vue的基本语法实现,自动补全功能 参考博客:https://www.jb51.net/article/136282.htm 效果:在文本框中,输入相关名称,调用后台接口,将数据填充到下拉 ...

  2. R:reshape2包中的melt

    melt()函数melt为熔化.溶解的意思,此处可理解为扔进去一个东西,出来另外一个本质一样但形状不一样的东西.语法结构:melt(data, ..., na.rm = FALSE, value.na ...

  3. 总结关于express vue-cli

    零零散散,拼起来,花了不少时间,这回把一些东西拼一下吧,免得到时又得重头开始,Blog还没弄好,打算用这些重新写一个,稍接不上,就落后了,这是技术,技术是不断更新换代的,明天这个框架,可以后天就有一个 ...

  4. mysql导入source数据库

    首先要确保数据库存在,如果不存在则创建 方法1 source 很智能,很方便,很快捷. # mysql -uroot -p Enter password: Welcome to the MySQL m ...

  5. UVA-10305 Ordering Tasks (拓扑排序)

    题目大意:给出n个点,m条关系,按关系的从小到大排序. 题目分析:拓扑排序的模板题,套模板. kahn算法: 伪代码: Kahn算法: 摘一段维基百科上关于Kahn算法的伪码描述: L← Empty ...

  6. vue-cli脚手架目录讲解

    build目录 config目录 是webpack配置相关的 node-modules目录 是我们用npm install 安装的依赖代码库 src目录 是我们项目的源码(我们开发的所有项目文件都在s ...

  7. hdu 3697 10 福州 现场 H - Selecting courses 贪心 难度:0

    Description     A new Semester is coming and students are troubling for selecting courses. Students ...

  8. VS中的生成事件

    1:为什么需要使用生成事件? 在实际开发过程中,一个公共使用的类库,在项目生成DLL后需要被复制到不同的目录下被引用,是不是觉得每次生成之后都需要人工复制是很麻烦的一件事情 我们可以利用VS中的项目生 ...

  9. JDK5的新特性:泛型、可变参数、静态导入

    数组可以在创建的时候就指定存放的数据类型,这样放入不同类型的时候就会发生编译错误. 而集合却可以存储多种不同类型,这样的话如果是遍历的时候在集合中装了好多不同的数据类型的时候,十分容易发生类型转换错误 ...

  10. 最终还是迁移到github

    作为全球最大的程序员同性交友社区,github pages 吸引了我 为了有一个更好的博客的写作环境 将会把内容逐渐迁移到 github.io 地址 zongxiao.github.io 新的文章也会 ...