在学习定位元素之前,应该要学会:

1.打开浏览器

2.打开网页

3.定位元素及操作

①定位元素

可只此输入框的id是kw,name是wd,class是s_ipt

②在python编辑器中找到该元素

通过name方式查找元素:

通过class方式查找元素:

通过查找链接名字(精确定义)方式查找元素

通过partial_link_text(模糊定义)的方式查找元素:

通过css方式查找元素:

先在网页上找到该元素,右键复制css路径

css正则表达式查找元素:

③操作元素

browser.maximize_window      窗口最大化

from selenium import webdriver
driver = webdriver.Ie(executable_path = "e:\\IEDriverServer") #打开浏览器
driver.get("http://wenku.baidu.com") #输入网址
driver.back() #向后退
driver.forward() #向前进
driver.refresh() #刷新页面 driver.set_page_load_timeout(2) #设置超时等待的时间,超过不再等待 try: #捕获超时异常
driver.get("http://www.sohu.com")
... except Exception,e:
... print e
...
Message: Timed out waiting for page to load. driver.maximize_window() #窗口最大化 driver.get_window_position() #获取坐标位置
{'y': -8, 'x': 1672} driver.name #判断使用的浏览器
u'internet explorer' driver.set_window_position(y=200, x=400) #设置浏览器坐标
#y:指的上下走,屏幕最顶部y=0 ;x:指的左右走 ,最左边x=0,不再当前屏幕的会出现负数
#浏览器最大化的状态再去设置坐标就不起作用了 driver.get_window_position()['x'] #获取x轴的位置
driver.get_window_position()['y'] #获取y轴的位置 driver.get_window_size() #获取浏览器的窗体大小
{'width': 160, 'height': 32}
driver.get_window_size()['width'] #获取浏览器的宽度
driver.get_window_size()['height'] #获取浏览器的高度
driver.set_window_size(100,200) #设置浏览器的窗体大小 print driver.title #获取页面title,可以用于做断言看打开的页面对不对
搜狐 assert u"搜狐" == driver.title #断言标题是否正确
assert u"搜狐2" == driver.title #断言标题出错
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AssertionError driver.page_source() #获取网页源码,返回的其实是unicode字符串 #抓取页面源码时,webdriver可以触犯页面上的js动态数据,但是它的缺点是比较慢;之前讲过的 #request抓取源码快,但只适用于静态页面,无法抓取js的动态页面内容
#抓取源码是非常重要的,可以随意操作 driver = webdriver.Ie(executable_path = "e:\\IEDriverServer")
driver.get("http://www.iciba.com")
driver.page_source[:50] #获取第50行的页面源码
u'<html><head><style></style><avalon class="avalonHi'
u"热门词汇" in driver.page_source #判断指定字段是不是在页面源码中存在
True driver.page_source.encode("gbk","ignore") #将页面源码转码成中文,加ignore避免无法识别的生僻 字报错 html=driver.page_source.encode("gbk","ignore") #将页面源码转成html文件
>>> with open("e:\\1.html","w"):
... pass
...
>>> with open("e:\\1.html","w") as fp:
... fp.write(html)
... driver.current_url #获取当前页面的url
u'http://www.iciba.com/

Selenium(三)webdriver的API与定位元素的更多相关文章

  1. Selenium 安装与配置及webdriver的API与定位元素

    1. selenium安装命令行 C:\Users\wu>cd /d E:\soft\python3.6\Scripts E:\soft\python3.6\Scripts>pip3 in ...

  2. Selenium 2自动化测试实战7(定位元素)

    一.xpath定位 1. 绝对定位 举例用百度输入框和搜索按钮 eg:find_element_by_xpath("/html/body/div/div[2]/div/div/div/fro ...

  3. Python+Selenium(webdriver常用API)

    总结了Python+selenium常用的一些方法函数,以后有新增再随时更新: 加载浏览器驱动: webdriver.Firefox() 打开页面:get() 关闭浏览器:quit() 最大化窗口:  ...

  4. selenium+python,解决selenium弹出新页面,无法定位元素的问题(报错:Unable to locate element:元素)

    1.问题发生描述: 从一个页面进行点击等操作,页面跳转到第二个页面,对第二个页面中的元素,采取任何措施定位都报错,问题报错点如下: 2.出现问题的原因: 窗口句柄还停留在上一个页面,对于当前新弹出的页 ...

  5. 【selenium】- webdriver常见api

    本文由小编根据慕课网视频亲自整理,转载请注明出处和作者. 1.常见API 2.打开网址 3.操作浏览器 quit()没有完全关闭进程,依旧占用资源. 4.输入框操作 5.选择框操作 6.特殊窗口操作 ...

  6. Selenium(四)使用xpath定位元素

    1.什么是xpath: 2.xpath的节点类型 3.xpath的表达式 4.开始定位 浏览器打开本地文件:   (python3.7的打开语法) 查找根节点: (绝对路径)查找子节点: 查找type ...

  7. selenium自学笔记---下拉框定位元素select

    下拉框1.先定位select 然后在定位option city = driver.find_element_by_id("selCities_0") city.find_eleme ...

  8. Selenium VS Webdriver

    Selenium 是 ThroughtWorks 一个强大的基于浏览器的开源自动化测试工具,它通常用来编写 Web 应用的自动化测试.随着 Selenium 团队发布 Selenium 2(又名 We ...

  9. 总结Selenium自动化测试方法(三)WebDriver定位元素方法

    三.WebDriver定位元素 推荐使用的webdriver是firefox,因为他的firebug更能可以帮助定位页面元素使用 # create a new Firefox session cls. ...

随机推荐

  1. 使用runtime完成解档归档

    简单的创建一个Person对象,并声明几个属性 @interface Person : NSObject<NSCoding> // 归档问题 必须遵守该协议 /** */ @propert ...

  2. MySQL 事务一览

    MySQL 中的事务? 对 MySQL 来说,事务通常是一组包含对数据库操作的集合.在执行时,只有在该组内的事务都执行成功,这个事务才算执行成功,否则就算失败.MySQL 中,事务支持是在引擎层实现的 ...

  3. Python学习路线图(2020年最新版)

    这是我刚开始学习python时的一套学习路线,从入门到上手.(不敢说精通,哈哈~) 希望对大家有帮助哈~ 一.Python入门.环境搭建.变量.数据类型 二.Python运算符.条件结构.循环结构 三 ...

  4. 1、1通过maven建立spring boot项目(不用联网)

    1.把以前spring boot项目的pom.xml导入进来 2.修改pom.xml  里面项目名改成自己项目名 3.复制配置文件 spring: datasource: url: jdbc:mysq ...

  5. oracle经典查询语句

    1. select * from emp;   2. select empno, ename, job from emp;   3. select empno 编号, ename 姓名, job 工作 ...

  6. python学习-28 map函数

    1. num_1 = [10,2,3,4] def map_test(array): ret = [] for i in num_1: ret.append(i**2) # 列表里每个元素都平方 re ...

  7. k8s-gitlab搭建

    Gitlab官方提供了 Helm 的方式在 Kubernetes 集群中来快速安装,但是在使用的过程中发现 Helm 提供的 Chart 包中有很多其他额外的配置,所以我们这里使用自定义的方式来安装, ...

  8. SQL Server系统函数:类型转换函数

    原文:SQL Server系统函数:类型转换函数 1.基本的转化 SELECT CAST(2008 as varchar(4)) + ' year!' SELECT CONVERT(varchar(4 ...

  9. a2 Bluebottle OS

    a2 Bluebottle OS That is a copy of original A2 Repository Also extra ISO image A2_Rev-6498_serial-tr ...

  10. 关于Vue中,在方法中使用(操作)子组件获取到的数据

    已知,子组件通过props获取父组件传过来的数据,而这个数据是无法在created.mounted生命周期中使用的,只能在beforeUpdated或者updated获取到: 但是如果我们要使用这个数 ...