浏览器操作

 
1
2
3
4
5
6
7
8
# 刷新
driver.refresh()
 
# 前进
driver.forward()
 
# 后退
driver.back()

获取标签元素

 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# 通过ID定位目标元素
driver.find_element_by_id('i1')
 
# 通过className定位目标元素
driver.find_element_by_class_name('c1')
 
# 通过name属性定位目标元素
driver.find_element_by_name('n1')
 
# 通过Xpath定位目标元素
driver.find_element_by_xpath('//*[@id="i1"]')
 
# 通过css Selector定位目标元素
driver.find_element_by_css_selector('#i1')
 
# 通过标签名称定位(注:在一个页面中,标签一定会重复,所以不用这个来进行定位)
driver.find_element_by_tag_name('input')
 
# 通过标签中的文本查找元素
driver.find_element_by_link_text('登录')
 
# 通过标签中文本的模糊匹配查找
driver.find_elements_by_partial_link_text('录')

获取标签元素常用的一共有8种定位方式,而Selenium实际提供了18种定位方式,还有8中是上面的复数形式,这里就不一一介绍了,实际运用中并不常用,还有2种实际上是这上面所说16种的底层封装。参数化的一种调用方式而已。

Cookie操作

 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 根据cookieKey,获取cookie信息
cookie = driver.get_cookie('cookieKey')
 
# 获取所有cookie信息
cookies = driver.get_cookies()
 
# 添加cookie,严格按照格式添加,cookie的key为name,value为value
driver.add_cookie({'name':'tmp','value':'123123123'})
 
# 删除所有cookie信息
driver.delete_all_cookies()
 
# 根据cookieKey删除对应cookie
driver.delete_cookie('UiCode')

窗口操作

 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# 获取当前浏览器的大小
driver.get_window_size()
 
# 通过像素设置浏览器的大小
driver.set_window_size('width','height')
 
# 获取当前窗口针对于Windows的位置的坐标x,y
driver.get_window_position()
 
# 设置当前窗口针对Windows的位置,x,y
driver.set_window_position(20,20)
 
# 最大化当前窗口,不需要传参
driver.maximize_window()
 
# 返回当前操作的浏览器句柄
driver.current_window_handle
 
# 返回所有打开server的浏览器句柄
driver.window_handles

截取当前页面

 
1
2
3
4
5
# 获取当前页面的二进制图片数据,需要自己去写入文件
driver.get_screenshot_as_png()
 
# as_png的上层封装,只需要传入图片名称自动写成图片
driver.get_screenshot_as_file('fileName.png')

执行JavaScript语句

 
1
2
3
4
5
6
7
# 执行JavaScript语句
driver.execute_script('JavaScript Commond')
 
# 例:
# 通过js来操作滚动条
# 参数1:x  参数2: y
window.scrollTo(100,400);

关闭与退出

 
1
2
3
4
5
# 当开启多个时,关闭当前页面
driver.close()
 
# 退出并关闭所有页面驱动
driver.quit()

其他

 
1
2
3
4
5
6
7
8
9
10
11
# 返回页面源码
driver.page_source
 
# 返回tag标题
driver.title
 
# 返回当前Url
driver.current_url
 
# 获取浏览器名称 如:chrome
driver.name

 

 

常见异常

 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
NoSuchElementException:没有找到元素
 
NoSuchFrameException:没有找到iframe
 
NoSuchWindowException:没找到窗口句柄handle
 
NoSuchAttributeException:属性错误
 
NoAlertPresentException:没找到alert弹出框
 
ElmentNotVisibleException:元素不可见
 
ElementNotSelectableException:元素没有被选中
 
TimeoutException:查找元素超时
switch-iframe
driver.switch_to.frame('top-frame')# 切换第一次层iframe
driver.find_element_by_css_selector('#newtag').send_keys('111')
driver.switch_to.frame('baidu-frame')# 切换第二层 iframe
driver.find_element_by_css_selector('#kw').send_keys(111)
driver.switch_to.parent_frame() # 回到上一层
driver.find_element_by_css_selector('#newtag').clear()#清除文本框内容
driver.switch_to.default_content() #回到默认层
driver.find_element_by_css_selector('#i1').clear()
switch-alert
driver.switch_to.alert.accept() # 点击alert的确认按钮
driver.switch_to.alert.dismiss() # 点击取消
鼠标悬浮的连贯操作
1.from selenium.webdriver.common.action_chains import ActionChains
# div = driver.find_element_by_css_selector('#a')
# disInput = driver.find_element_by_css_selector('#dis1')
# ActionChains(driver).move_to_element(div).click(disInput)
2.# js = "document.getElementById('dis1').style.display='';"
# driver.execute_script(js)
拖拽
s1 = driver.find_element_by_css_selector('#dragger') t1 = driver.find_element_by_css_selector('#i1') from selenium.webdriver.common.action_chains import ActionChains ActionChains(driver).drag_and_drop(s1,t1).perform()
select
element = driver.find_element_by_xpath('//select[1]')
from selenium.webdriver.support.select import Select
# 根据value进行操作
Select(element).select_by_value('4')
Select(element).select_by_index(3)

UI自动化(十)selenium定位的更多相关文章

  1. UI自动化和selenium相关以及八大定位

    一.UI自动化相关 1. UI自动化的本质(重点) 定位元素→操作元素→模拟页面操作→断言→测试报告 2. 适合UI自动化的场景 UI自动化的前提条件 (1)需求不能频繁变动 (2)UI稳定(UI自动 ...

  2. (appium+python)UI自动化_03_元素定位工具

    前言 在UI自动化过程中,需要对手机app上的元素进行定位,然后进一步编写自动化脚本操作app.定位元素首先需要定位工具来辅助查看页面元素.小编常用的定位工具有2种,分别是uiautomatorvie ...

  3. python ui自动化之元素定位和常用操作

    做ui自动化的最基础的就是页面元素定位了,如果连页面元素都定位不到,自动化从何谈起呢?接下来我们就看看页面元素定位的方法吧!(这里就用百度页面来进行演示) 一.最通用的几种定位方式: 1.通过id定位 ...

  4. ui自动化之selenium操作(三)xpath定位

    xpath 的定位方法,非常强大.使用这种方法几乎可以定位到页面上的任意元素. 1. 什么是xpath? xpath 是XML Path的简称, 由于HTML文档本身就是一个标准的XML页面,所以我们 ...

  5. ui自动化之selenium操作(二)定位元素-简单操作

    1. 将浏览器最大化 这里拿chrome举例,但是我在执行的时候一直报错,被坑了好久; 解决办法: 这是因为chromedriver是和chrome一一对应的,不兼容的版本就会报错: 所有chrome ...

  6. ui自动化之selenium操作(五)简单元素操作--续

    1. 多窗口切换 有时候需要在多窗口切换,webdriver提供了switch_to_window()方法支持切换窗口: from selenium import webdriver import o ...

  7. ui自动化之selenium操作(四)简单元素操作

    1. clear() clear()方法用于清除文本输入框内的内容:一般输入框中都有默认文字,如果不清空有可能会导致字符拼接: browser.find_element(By.ID,"use ...

  8. UI自动化之元素定位(xpath、css)

    很早之前就已经写过自动化了,不过点着功能久了就会容易忘记元素定位,尤其是xpath和css定位,所以就花点时间做下总结收集. xpath有两种定位: 一.绝对路径(不推荐使用,除非已经使用了所有方式仍 ...

  9. 关于UI自动化中元素定位常用方法的个人总结

    1.如果目标元素有id属性,优先使用id定位: 2.元素locator尽可能保证简洁,考虑locator中路径的变化频率,尽量减少后期更新和维护成本: 3.使用xpath时,不要一味的使用‘/’逐层进 ...

  10. python UI自动化之JS定位

    1.话不多说,直接贴入代码 上面的 document.getElementById 可以替换成别的定位方式,比如: 通过name获取:document.getElementsByName 通过标签获取 ...

随机推荐

  1. 【CF613D】Kingdom and its Cities 虚树+树形DP

    [CF613D]Kingdom and its Cities 题意:给你一棵树,每次询问给出k个关键点,问做多干掉多少个非关键点才能使得所有关键点两两不连通. $n,\sum k\le 10^5$ 题 ...

  2. 在cmd启动一个win32程序,printf把信息输出到启运它的那个CMD窗口

    #define ProcessBasicInformation 0 typedef struct { DWORD ExitStatus; DWORD PebBaseAddress; DWORD Aff ...

  3. SSO(singlesignon)单点登录

    技术实现机制: 当用户第一次访问应用系统1的时候,因为还没有登录,会被引导到认证系统中进行登录:根据用户提供的登录信息,认证系统进行身份效验,如果通过效验,应该返回给用户一个认证的凭据--ticket ...

  4. JS实现表格使用上下左右键聚集

    //调用:new tabTableInput("tblGrid","text"); var tabTableInput = function (tableId, ...

  5. python全栈开发 * 20 继承知识点汇总 * 180530

    20 面向对象的三大特征之一(继承,多态,封装) -----继承 1.继承的定义: 继承是一种创建新类的方式,在python中,新建的类可以继承一个或多个父类;父类又可称为基类或超类,新建的类称为派生 ...

  6. Docker数据卷

    1.volume操作命名:docker volume Usage:    docker volume COMMAND Manage Docker volumes Options:       --he ...

  7. 【转】AngularJS动态生成div的ID

    AngularJS动态生成div的ID 原文链接:http://blog.csdn.net/you23hai45/article/details/52348078 1.问题背景 给定一个数组对象,里面 ...

  8. Elasticsearch学习笔记(六)核心概念和分片shard机制

    一.核心概念 1.近实时(Near Realtime NRT) (1)从写入数据到数据可以被搜索到有一个小延迟(大概1秒): (2)基于es执行搜索和分析可以达到秒级 2.集群(Cluster) 一个 ...

  9. bugfree3.0.1-修改“优先级”为中文引起的PHP Error

    博主在搭建好bugfree后,修改了系统中“优先级”字段,将原先系统定义的优先级“1.2.3.4”修改为符合博主自己项目要求的优先级“高.中.低”.修改成功后,系统确实将原先提交的BUG优先级从“1. ...

  10. Django基本配置与URLconf

    what's the Django python的框架主要有:Django.Flask.Tornado Django是一个开放源代码的Web应用框架,由Python写成.它的主要特点是大而全,我们需要 ...