Selenium自动化脚本开发总结
Selenium Selenium 是ThoughtWorks专门为Web应用程序编写的一个验收测试工具。 Selenium测试直接运行在浏览器中,就像真正的用户在操作一样。支持的浏览器包括IE、Mozilla Firefox、Mozilla Suite等。这个工具的主要功能包括:测试与浏览器的兼容性——测试你的应用程序看是否能够很好得工作在不同浏览器和操作系统之上。测试系统功能——创建衰退测试检验软件功能和用户需求。支持自动录制动作和自动生成。Net、Java、Perl等不同语言的测试脚本。
Selenium—页面元素定位
By.className(className))
By.cssSelector(selector)
By.id(id) By.linkText(linkText)
By.name(name)
By.partialLinkText(linkText)
By.tagName(name)
By.xpath(xpathExpression)
注意:selenium-webdriver通过findElement()\findElements()等find方法调用"By"对象来定位和查询元素。 By类只是提供查询的方式进行分类。findElement返回一个元素对象否则抛出异常,findElements返回符合条 件的元素List,如果不存在符合条件的就返回一个空的list。
Selenium自动化--对象操作
1:点击按钮/链接click()
Driver.FindElement(By.XPath(“//input[@id=‘submit’ and @value=‘下一步’]”)).click();
2:清空文本框clear()
Driver.FindElement(By.Id(“tranAmtText”)).clear();
3:在文本框中输入指定的字符串sendkeys()
Driver.FindElement(By.Id("tranAmtText")).SendKeys(“123456”);
4:移动光标到指定的元素上perform
Actions action=new Actions(driver); action.MoveToElement(Find(By.XPath("//input[@id='submit' and @value='确定']"))).Perform();
5:模拟光标晃动movebyoffset()
Actions action = new Actions(driver); action.MoveByOffset(2, 4);
6:等待页面元素加载完成,默认等待100秒
WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(100));
//等待页面上ID属性值为submitButton的元素加载完成 wait.Until((d) => { return WaitForObject(By.Id("submitButton")); });
Select操作//选择下拉框
protected void SelectUsage(string selectid, string text) { IWebElement select = Find(By.Id(selectid)); IList<IWebElement> AllOptions = select.FindElements(By.TagName("option")); foreach (IWebElement option in select.FindElements(By.TagName("option"))) { if (option.GetAttribute("value").Equals(text)) option.Click(); } }
Selenium自动化—操作iframe
1:切换焦点到id为固定值的iframe上 进入页面后,光标默认焦点在DefaultContent中,若想要定位到iframe 需要转换焦点
driver.SwitchTo().DefaultContent(); //切换焦点到mainFrame driver.SwitchTo().Frame("mainFrame");
需要注意的是:切换焦点之后若想切换焦点到其他iframe上 需要先返回到defaultcontent,再切换焦点到指定的iframe上。
2:切换焦点到id值为动态值的iframe上 有时候 页面上浮出层的id为动态值,此时需要先获取所有符合记录的iframe放置在数组中,然后遍历数组切换焦点到目标iframe上。 如下方法:
protected string bizFrameId = string.Empty; protected string bizId = string.Empty; //获取动态iframe的id值
protected void SetIframeId() {
ReadOnlyCollection<IWebElement> els = driver.FindElements(By.TagName("iframe"));
foreach (var e in driver.FindElements(By.TagName("iframe"))) { string s1 = e.GetAttribute("id");
if (s1.IndexOf("window") >= 0 && s1.IndexOf("content") >= 0) { bizFrameId = e.GetAttribute("id");
string[] ss = s1.Split(new char[] { '_' }); bizId = ss[1];
}
}
}
Selenium自动化—浏览器操作
//获取所有的WindowHandle,关闭所有子窗口
string oldwin = driver.CurrentWindowHandle;
ReadOnlyCollection<string> windows = driver.WindowHandles; foreach (var win in windows) {
if (win != oldwin) { driver.SwitchTo().Window(win).Close(); } }
driver.SwitchTo().Window(oldwin);
今天的Selenium学习总结就分享到这里,谢谢大家的查阅,更多精彩内容请订阅ベ墨城烟柳旧人殇ミ博客园;下期再见!
Selenium自动化脚本开发总结的更多相关文章
- java+selenium自动化脚本编写
实训项目:创盟后台管理,页面自动化脚本编写 使用工具:java+selenium 1)java+selenium环境搭建文档 2)创盟项目后台管理系统链接 java+selenium环境搭建 一.Se ...
- Selenium+C#自动化脚本开发学习
1:Selenium中对浏览器的操作 首先生成一个Web对象 IWebDriver driver = new FirefoxDriver(); //打开指定的URL地址 driver.Navigate ...
- 【功耗测试环境预置自动化脚本开发】【切换wifi模式为siso模式】【用到方法*args】
import os,reimport logginglogging.basicConfig(level=logging.DEBUG, format='%(asctime)s %(filename)s[ ...
- Python+selenium自动化脚本编辑过程中遇到的问题和小技巧
应该也不算是问题和技巧,算是实践中学习到的Python,记录下,也不定时更新 1.通过截取url判断 实例: self.assertEqual(self.broswer.current_url[sel ...
- Jenkins自动化构建(一)执行selenium+python脚本
Jenkins执行python写的selenium自动化脚本,通常会遇到,执行打不开浏览器,查看jenkins构建Console Output控制台输出信息,发现脚本是执行了的,但是出错了,打开浏览器 ...
- selenium-第一个自动化脚本
经过上一篇的环境搭建,这一篇我们开始编写第一个自动化脚本. 一个简单的测试百度的demo #coding=utf-8 from selenium import webdriver driver = w ...
- 《手把手教你》系列基础篇(五)-java+ selenium自动化测试- 创建首个自动化脚本(详细教程)
1.简介 前面几篇宏哥介绍了两种(java和maven)环境搭建和三大浏览器的启动方法,这篇文章宏哥将要介绍第一个自动化测试脚本.前边环境都搭建成功了,浏览器也驱动成功了,那么我们不着急学习其他内容, ...
- appium-desktop录制脚本二次开发,生成我司自动化脚本
目的 通过对appium-desktop脚本录制功能进行二次开发,使录制的java脚本符合我司自动化框架要求. 实现步骤 1.增加元素名称的输入框 由于ATK(我司自动化测试框架)脚本中元素是以“ap ...
- jmeter --自动化badboy脚本开发技术
jmeter --自动化badboy脚本开发技术 一般人用badboy都是使用它的录制功能,其它badboy还是一款自动化的工具,它可以实现检查点.参数化.迭代.并发.报告.断点等功能.本文就这些功能 ...
随机推荐
- SQL2008实现数据库自动定时备份——维护计划
在SQL Server中出于数据安全的考虑,所以需要定期的备份数据库.而备份数据库一般又是在凌晨时间基本没有数据库操作的时候进行,所以我们不可能要求管理员 每天守到晚上1点去备份数据库.要实现数据库的 ...
- jQuery Deferred和Promise的使用介绍:
deferred对象是从jquery1.5.0引入的一个新对象,ES6也引入了Promise的正式规范. 抽象来说,deferreds 可以理解为表示需要长时间才能完成的耗时操作的一种方式,相比于阻塞 ...
- Spark计算模型
[TOC] Spark计算模型 Spark程序模型 一个经典的示例模型 SparkContext中的textFile函数从HDFS读取日志文件,输出变量file var file = sc.textF ...
- Kafka 0.10 SocketServer源代码分析
1概要设计 Kafka SocketServer是基于Java NIO来开发的,采用了Reactor的模式,其中包含了1个Acceptor负责接受客户端请求,N个Processor负责读写数据,M个H ...
- 深圳尚学堂:Web程序员应该会的知识
互联网的行业里涌入了很多的程序员, 都在为互联网的发展添砖加瓦.程序员可以分为很多种,像Unix程序员.Windows程序员,或是C++程序员.Delphi程序员,等等.今天我们谈谈Web程序员,一名 ...
- 内功心法 -- java.util.ArrayList<E> (4)
写在前面的话:读书破万卷,编码如有神--------------------------------------------------------------------下文主要对java.util ...
- <C++Primer>第四版 阅读笔记 第四部分 “面向对象编程与泛型编程”
继承和动态绑定与数据抽象一起成为面向对象编程的基础. 模板使我们能够编写独立于具体类型的泛型类和泛型函数. 第15章 面向对象编程 面向对象编程基于三个基本概念:数据抽象.继承和动态绑定.在C++中, ...
- (转)JAVA的整型与字符串相互转换
JAVA的整型与字符串相互转换1如何将字串 String 转换成整数 int? A. 有两个方法: 1). int i = Integer.parseInt([String]); 或 ...
- bootstrap - btn 实例
<!DOCTYPE HTML> <html> <head> <meta http-equiv="Content-Type" content ...
- start(共勉)
“父母在,不远游,游必有方.”正犹豫着或者已经在路上的年轻人,如果选择远行,请风雨兼程,好好奋斗吧.