四、WebDriver常用的操作

1、控制浏览器操作

#控制浏览器的大小

self.driver.set_window_size(480,800)

#控制浏览器返回

self.driver.back()

#控制浏览器前进到下个页面

self.driver.forward()

#刷新当前页面

self.driver.refresh()

2、控制页面元素的简单操作

#清除文本操作

self.driver.find_element_by_xpath("/div/div[2]/div/div/div").clear()

#模拟键盘输入值

self.driver.find_element_by_xpath("/div/div[2]/div/div/div").send_keys(“urstest@163.com”)

#点击元素

self.driver.find_element_by_xpath("/div/div[2]/div/div/div").click()

#提交表单

self.driver.find_element_by_xpath("/div/div[2]/div/div/div").submit()

#返回输入框尺寸

size=self.driver.find_element_by_xpath("/div/div[2]/div/div/div").size

print(size)

#返回文本内容

text=self.driver.find_element_by_xpath("/div/div[2]/div/div/div").text

print(text)

#返回元素的属性值

attribute1=self.driver.find_element_by_xpath("/div/div[2]/div/div/div").get_attribute(‘id’)

print(attribute1)

attribute2=self.driver.find_element_by_xpath("/div/div[2]/div/div/div").get_attribute(‘name’)

print(attribute2)

attribute3=self.driver.find_element_by_xpath("/div/div[2]/div/div/div").get_attribute(‘type’)

print(attribute3)

#返回元素的结果是否可见,返回结果是True或是False

result=self.driver.find_element_by_xpath("/div/div[2]/div/div/div").is_displayed()

print(result)

#返回页面标题

title=self.driver.title

print(title)

#返回页面url

url=self.driver.current_url

print(url)

#上传文件,上传文件相当于给元素传值,可以用send_keys()函数

self.driver.find_element_by_xpath("/div/div[2]/div/div/div").send_keys(‘D:\\upload_file.txt’)

3、鼠标操作

首先要导入鼠标操作的Actionchains类

#引入Actionchains类

from selenium import webdriver

from selenium.webdriver.common.action_chains import ActionChains

然后就可以用下面的这些函数进行鼠标的操作了

#左键用上面讲到的click()函数就可以了

#右键

right_click= self.driver.find_element_by_xpath("/div/div[2]/div/div/div")

ActionChains(driver).context_click(right_click).perform()

#双击

double_click= self.driver.find_element_by_xpath("/div/div[2]/div/div/div")

ActionChains(driver).double_click(double_click).perform()

#拖拽

#拖拽的原位置

element= self.driver.find_element_by_xpath("/div/div[2]/div/div/div")

#拖拽的目标位置

target= self.driver.find_element_by_xpath("/div/div[2]/div/div/div[2]")

#执行拖拽

ActionChains(driver).drag_and_drop(element,target).perform()

4、键盘操作

首先要导入键盘操作的Keys类

#引入Keys类

from selenium import webdriver

from selenium.webdriver.common.keys import Keys

然后就可以用下面的这些函数进行键盘的操作了

#输入内容:用之前的send_keys()函数即可

#回删内容

text= self.driver.find_element_by_xpath("/div/div[2]/div/div/div")

text.send_keys(Keys.BACK_SPACE)

#输入空格及内容

text= self.driver.find_element_by_xpath("/div/div[2]/div/div/div")

text2=text.send_keys(Keys.SPACE)

text2.send_keys(u“就是啊”)

#全选内容ctrl+a

text= self.driver.find_element_by_xpath("/div/div[2]/div/div/div")

text.send_keys(Keys.CONTROL,’a’)

#剪切内容ctrl+x

text= self.driver.find_element_by_xpath("/div/div[2]/div/div/div")

text.send_keys(Keys.CONTROL,’x’)

#粘贴内容ctrl+v

text= self.driver.find_element_by_xpath("/div/div[2]/div/div/div")

text.send_keys(Keys.CONTROL,’v’)

#回车

text= self.driver.find_element_by_xpath("/div/div[2]/div/div/div")

text.send_keys(Keys.ENTER)

5、元素等待操作

①显示等待

原理:显式等待,就是明确的要等到某个元素的出现或者是某个元素的可点击等条件,等不到,就一直等,除非在规定的时间之内都没找到,那么就跳出Exception.(简而言之:就是直到元素出现才去操作,如果超时则报异常)

②隐式等待

原理:隐式等待,就是在创建driver时,为浏览器对象设置一个等待时间。这个方法是得不到某个元素就等待一段时间,直到拿到某个元素位置。

注意:在使用隐式等待的时候,实际上浏览器会在你自己设定的时间内不断的刷新页面去寻找我们需要的元素

③休眠方法sleep

需要导入sleep类

#引入sleep类

from selenium import webdriver

from time import sleep

time.sleep(3)

6、处理验证码(验证码是阻碍自动化测试的部分,所以要想办法绕开这个环节)

①注释掉验证码部分的代码

②设置一个万能验证码

③验证码的识别技术

④记录cookie,来跳过登录的部分

总结Selenium自动化测试方法(四)WebDriver常用的操作的更多相关文章

  1. 总结Selenium自动化测试方法(一)自动化测试基础

    总结Selenium自动化测试方法 一.自动化测试基础 1.什么样的项目适合自动化测试 ①任务测试明确,不会频繁变动 ②每日构建后的测试验证 ③比较频繁的回归测试 ④软件系统界面稳定.变动少 ⑤需要在 ...

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

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

  3. 【关于selenium自动化中,Webdriver的原理以及工作流程】

    原文地址:https://www.cnblogs.com/imyalost/p/7242747.html#4109245 作者:老 张 1.关于Webdriver 设计模式:按照Server-Clie ...

  4. 总结Selenium自动化测试方法(六)常见的异常错误处理

    六.常见的异常错误处理 NoSuchElementException: Message: Unable to locate element: {"method":"xpa ...

  5. 总结Selenium自动化测试方法(五)自动化测试框架

    五.自动化测试框架 1.单元测试框架unittest class loginTests(unittest.TestCase): ①开始的初始化部分 @classmethod def setUpClas ...

  6. 总结Selenium自动化测试方法(二)测试环境搭建

    (接上期内容) 二.测试环境搭建 1.安装python 现在python3.0比python2.0多了一些改进的功能(详见http://zhidao.baidu.com/link?url=3sT1g7 ...

  7. python webdriver 常用元素操作

    1.新建实例 xx_driver = os.path.abspath(r"路径") os.environ["webdriver.xx.driver"] = xx ...

  8. python+selenium自动化软件测试(第2章):WebDriver API

    2.1 操作元素基本方法 前言前面已经把环境搭建好了,从这篇开始,正式学习selenium的webdriver框架.我们平常说的 selenium自动化,其实它并不是类似于QTP之类的有GUI界面的可 ...

  9. 【python+selenium的web自动化】- 元素的常用操作详解(二)

    如果想从头学起selenium,可以去看看这个系列的文章哦! https://www.cnblogs.com/miki-peng/category/1942527.html ​ 本篇主要内容:1.鼠标 ...

随机推荐

  1. .NET设计模式(10):装饰模式(Decorator Pattern)(转)

    概述 在软件系统中,有时候我们会使用继承来扩展对象的功能,但是由于继承为类型引入的静态特质,使得这种扩展方式缺乏灵活性:并且随着子类的增多(扩展功能的增多),各种子类的组合(扩展功能的组合)会导致更多 ...

  2. 两台机器间libevent通信:No route to host问题

    最近学习libevent库,遂在两台虚拟机间模拟通信,程序没逻辑错误,但客户端总是提示No route to host问题,想到可能是linux的防火墙问题导致的,于是关掉防火墙: Ubuntu系统防 ...

  3. git shell 中文

    alias ls="ls --show-control-chars" alias ll="ls -l"

  4. NGUI 实现 透明底图遮罩 && 人物像素变黑

    今天 UI 那边要求实现一个 透明底图遮罩 与 变黑 的效果. 刚开始考虑使用 shader 实现一个 网上搜了一下,发现了这个,但是底图需要不透明才行,不然他会把 底图的不遮罩部分的透明部分 进行颜 ...

  5. Python日志输出——logging模块

    Python日志输出——logging模块 标签: loggingpythonimportmodulelog4j 2012-03-06 00:18 31605人阅读 评论(8) 收藏 举报 分类: P ...

  6. 【中国互联网不眠夜】Struts2漏洞百出,OneRASP鼎力相助

    Struts2是一款优秀的网站框架,在互联网上有十分广泛的应用,近期apache官方发布了高危漏洞通告Apache Struts 任意代码执行漏洞(CVE-2016-3081,S2-032),该漏洞风 ...

  7. HDU 3998 Sequence (最长上升子序列+最大流)

    参考链接:http://www.cnblogs.com/gentleh/archive/2013/03/30/2989958.html 题意:求一个序列的最长上升子序列,及其个数(注意:两个最长上升子 ...

  8. MapReduce实例

    1.WordCount(统计单词) 经典的运用MapReuce编程模型的实例 1.1 Description 给定一系列的单词/数据,输出每个单词/数据的数量 1.2 Sample a is b is ...

  9. Shell练习 统计单词个数,降序排列

    原文:https://leetcode.com/problems/word-frequency/ Write a bash script to calculate the frequency of e ...

  10. [Microsoft][ODBC Microsoft Access Driver] INSERT INTO 语句的语法错误。

    遇到的情景: sta.executeUpdate("insert into 表1(longitude,latitude,time) values("+a[0]+",&qu ...