UI自动化测试之selenium(1)——selenium中的常用api

目录

1 对浏览器操作
1.1 用webdriver打开一个浏览器
1.2 最大化浏览器&关闭浏览器
1.3 设置浏览器窗口大小
1.4 打开测试页面
1.5 处理浏览器弹出的新窗口
2 页面元素定位
3 如何对页面元素进行操作
3.1 WebElement相关方法
3.2 iFrame的处理
3.3 输入框(text field or textarea)
3.4 下拉选择框(Select)
3.5 单选项(Radio Button)
3.6 多选项(checkbox)
3.7 按钮(button)
3.8 处理Alert
3.9 上传文件
3.9.1 元素标签是Input时上传方式
3.9.2 通过操作桌面浏览窗口上传
3.10 Selenium处理HTML5
3.10.1 处理Vedio
3.10.2 处理Canvas
3.11 表单(Form)
4 其他
4.1 等待元素加载
4.2 执行JS脚本
4.3 模拟键盘操作

1 对浏览器操作

返回
1.1 用webdriver打开一个浏览器
复制代码

//打开firefox浏览器:
WebDriver driver = new FirefoxDriver();
//打开IE浏览器
WebDriver driver = new InternetExplorerDriver ();
//打开HtmlUnit浏览器
WebDriverdriver = new HtmlUnitDriver();
//打开chrome浏览器
WebDriverdriver = new ChromeDriver();

复制代码
1.2 最大化浏览器&关闭浏览器

WebDriver driver = new FirefoxDriver();
driver.manage().window().maximize();
driver.close();
driver.quit();

1.3 设置浏览器窗口大小

1.4 打开测试页面

打开测试页面
driver.get("http://www.baidu.com/");
driver.navigate().to("http://www.baidu.com/");
//navigate方法会产生1个Navigator对象,其封装了与导航相关的一些方法,比如前进后退等

1.5 处理浏览器弹出的新窗口

2 页面元素定位

返回

Webdriver提供下面两种方法来定位页面元素,参数是By对像,最常用是By.id和By.name查找。

findElement   定位某个元素,如果没有找到元素会抛出异常:NoSuchElementException
findElements     定位一组元素

例如需要定位如下元素:

  <input class="input_class" type="text" name="passwd" id="passwd-id" />

复制代码

//By.id
WebElement element = driver.findElement(By.id("passwd-id"));
//By.name
WebElement element = driver.findElement(By.name("passwd"));
//By.xpath
WebElement element =driver.findElement(By.xpath("//input[@id=‘passwd-id‘]"));
//By.className
WebElement element = driver.findElement(By.className("input_class"));
//By.cssSelector
WebElement element = driver.findElement(By.cssSelector(".input_class"));
//By.linkText
//通俗点就是精确查询
WebDriver driver = new FirefoxDriver();
driver.get("http://www.baidu.com/");
WebElement element = driver.findElement(By.linkText("百科"));
//By.partialLinkText:
//这个方法就是模糊查询
WebDriver driver = new FirefoxDriver();
driver.get("http://www.baidu.com/");
WebElement element = driver.findElement(By.partialLinkText("hao"));
//By.tagName
WebDriver driver = new FirefoxDriver();
driver.get("http://www.baidu.com/");
String test= driver.findElement(By.tagName("form")).getAttribute("name");
System.out.println(test);

复制代码
3 如何对页面元素进行操作

返回
3.1 WebElement相关方法
Method Summary
void clear() If this element is a text entry element, this will clear the value.
void click() Click this element.
WebElement findElement(By by) Find the first WebElement using the given method.
java.util.List<WebElement> findElement(By by) Find all elements within the current context using the given mechanism.
java.lang.String getAttribute(java.lang.String name) Get the value of a the given attribute of the element.
java.lang.String getCssValue(java.lang.String.propertyName) Get the value of a given CSS property.
Point GetLocation() Where on the page is the top left-hand corner of the rendered element?
Dimension getSize() What is the width and height of the rendered element?
java.lang.String getTagName() Get the tag name of this element.
java.lang.String getText() Get the visible (i.e. not hidden by CSS) innerText of this element, including
sub-elements, without any leading or trailing whitespace.
boolean isDisplayed() Is this element displayed or not? This method avoids the problem of having to parse an element‘s "style" attribute.
boolean isEnabled() Is the element currently enabled or not? This will generally return true for everything but disabled input elements.
boolean isSelected() Determine whether or not this element is selected or not.
void sendKeys(java.lang.CharSequence... keysToSend) Use this method to simulate typing into an element, which may set its value.
void submit() If this current element is a form, or an element within a form, then this will be submitted to the remote server.
3.2 iFrame的处理

driver.switchTo().frame(“city_set_ifr”); //传入的是iframe的ID
dr.switchTo().defaultContent(); //如果要返回到以前的默认content

3.3 输入框(text field or textarea)

WebElement element = driver.findElement(By.id("passwd-id"));
element.sendKeys(“test”);//在输入框中输入内容:
element.clear();     //将输入框清空
element.getText();   //获取输入框的文本内容:

3.4 下拉选择框(Select)
复制代码

Select select = new Select(driver.findElement(By.id("select")));
select.selectByVisibleText(“A”);
select.selectByValue(“1”);
select.deselectAll();
select.deselectByValue(“1”);
select.deselectByVisibleText(“A”);
select.getAllSelectedOptions();
select.getFirstSelectedOption();

复制代码

示例:

3.5 单选项(Radio Button)

WebElement radio=driver.findElement(By.id("BookMode"));
radio.click();     //选择某个单选项
radio.clear();     //清空某个单选项
radio.isSelected();  //判断某个单选项是否已经被选择

3.6 多选项(checkbox)

WebElement checkbox = driver.findElement(By.id("myCheckbox."));
checkbox.click();
checkbox.clear();
checkbox.isSelected();
checkbox.isEnabled();

3.7 按钮(button)

WebElement btn= driver.findElement(By.id("save"));
btn.click();      //点击按钮
btn.isEnabled ();  //判断按钮是否enable

3.8 处理Alert

弹出对话框(Popup dialogs)

Alert alert = driver.switchTo().alert();
alert.accept();  //确定
alert.dismiss();  //取消
alert.getText(); //获取文本

示例:

3.9 上传文件
3.9.1 元素标签是Input时上传方式

Upload.html文件内容如下:

<body>
<input type="file" id="fileControl" value="选择文件"/>
</body>

代码如下:

3.9.2 通过操作桌面浏览窗口上传

示例2 上传文件
3.10 Selenium处理HTML5
3.10.1 处理Vedio

这就需要了解html5中vedio的相关方法了,可以参考http://www.w3school.com.cn/tags/html_ref_audio_video_dom.asp

3.10.2 处理Canvas

3.11 表单(Form)

//Form中的元素的操作和其它的元素操作一样,对元素操作完成后对表单的提交可以:
WebElement approve = driver.findElement(By.id("approve"));
approve.click();
//或
approve.submit();//只适合于表单的提交

4 其他

返回
4.1 等待元素加载

超时设置

WebDriver driver = new FirefoxDriver();
driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);     //识别元素时的超时时间
driver.manage().timeouts().pageLoadTimeout(10, TimeUnit.SECONDS);  //页面加载时的超时时间
driver.manage().timeouts().setScriptTimeout(10, TimeUnit.SECONDS);  //异步脚本的超时时间

硬性等待  Thread.sleep(int sleeptime);
智能等待
设置等待页面加载完毕


4.2 执行JS脚本

selenium常用的js总结

有时候我们需要JS脚本来辅助我们进行测试,比如我们用JS赋值或者用js执行点击操作等。执行JS脚本比较适用某些元素不易点击的情况下使用,比如网页内容太长,当前窗口太长,想要点击那些不在当前窗口可以看到元素可以用此方法。

4.3 模拟键盘操作

有时候有些元素不便点击或者做其他的操作,这个时候可以借助selenium提供的Actions类,它可以模拟鼠标和键盘的一些操作,比如点击鼠标右键,左键,移动鼠标等操作。对于这些操作,使用perform()方法进行执行。
复制代码

private static void actionsTest(WebDriver driver)
        throws InterruptedException {
    // 设置等待页面完全加载的时间是10秒,如果在10秒内加载完毕,剩余时间不在等待
    driver.manage().timeouts().pageLoadTimeout(10, TimeUnit.SECONDS);
    driver.get("https://www.baidu.com/");
    By inputBox = By.id("kw");
    By searchButton = By.id("su");
    // 智能等待元素加载出来
    intelligentWait(driver, 10, inputBox);
    // 智能等待元素加载出来
    intelligentWait(driver, 10, searchButton);
    // 实例化action对象
    Actions action = new Actions(driver);
    // 通过action模拟键盘输入java关键字到 输入框,只有使用了perform方法才会输入进去
    action.sendKeys(driver.findElement(searchButton), "java").perform();
    // 鼠标模拟移动到搜索按钮
    action.moveToElement(driver.findElement(searchButton)).perform();
    // 模拟点击操作
    action.click().perform();
    Thread.sleep(2000);
}

原文地址:http://blog.51cto.com/4998165/2072522

时间: 2024-11-05 22:03:37

UI自动化测试之selenium(1)——selenium中的常用api的相关文章

UI自动化测试之Jenkins配置

前一段时间帮助团队搭建了UI自动化环境,这里将Jenkins环境的一些配置分享给大家. 背景: 团队下半年的目标之一是实现自动化测试,这里要吐槽一下,之前开发的测试平台了,最初的目的是用来做接口自动化测试和性能测试,但由于各种原因,接口自动化测试那部分功能整个废弃掉了,其中和易用性有很大关系,另外,也和我们公司的接口业务也有关.不过性能测试功能开发同学用的很欢快,还有接口的管理,目前是连接前端与后端的重要桥梁.目前又加入了环境管理(我公司主要用docker创建开发和测试环境),最近又加入了需求管

lua中string常用api

local a="abcdefgbbb" string.sub(a,1,3) 字符串截取 返回截取的字符串           print(string.sub(a,1,3))      --abc string.gsub(a,"b","c",5) 字符串替换,将a中的bbb替换为ccc 替换5次,返回替换后的字符串跟替换次数  -- print(string.gsub(a,"b","c",5)) --ac

[python]RobotFramework自定义库实现UI自动化

1.安装教程 环境搭建不多说,网上资料一大堆,可参考https://www.cnblogs.com/puresoul/p/3854963.html,写的比较详细,值得推荐.目前python3是不支持ride的所以,用python2 2.创建一个工程 &工程下有哪些目录,这样放文件比较明确,如下 &创建好,这时候就得写脚本主题是UI自动化,所以用selenium库,还有其他得辅助库 ,cd c:\Python27\Scripts\,执行easy_install pip, 安装好pip后dos

Selenium 自动化测试之道--学习总结-WebDriver

最近正在看Ping++测试团队编著的<Selenium 自动化测试之道>,非常非常好的一本书,不仅仅是工具的介绍使用,还有非常珍贵的实践总结,自己的公司也在做自动化,由于是基于B/S,要考虑到硬件环境,而且主要使用的是RobotFramework去构建自动化脚本验证系统的可靠性. 之前自己也学习过关于Selenium的知识,但是总感觉知识很零散,自己在网上搜了很长时间,买了这本书,发现自己还欠缺很多,很庆幸能读到这本书,下面开始一点点的搭建自己的知识框架. 一.工作原理 Selenium We

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

一.UI自动化相关 1. UI自动化的本质(重点) 定位元素→操作元素→模拟页面操作→断言→测试报告 2. 适合UI自动化的场景 UI自动化的前提条件 (1)需求不能频繁变动 (2)UI稳定(UI自动化就是基于UI层面的,UI界面总变化无法开展) (3)项目周期长(UI自动化脚本编写和调试耗时,项目周期短纯手工更高效) (4)回归测试频繁(回归测试多就会有不断的主流程功能需要回归,自动化更高效) 适用场景 (1)冒烟测试 (2)主功能回归测试 3. UI自动化的原则 (1)一个case完成一个功

RobotFramework自动化测试框架-Selenium Web自动化(三)关于在RobotFramework中如何使用Selenium很全的总结(下)

本文紧接着RobotFramework自动化测试框架-Selenium Web自动化(二)关于在RobotFramework中如何使用Selenium很全的总结(上)继续分享RobotFramework中如何使用Selenium进行自动化测试. 本文章节目录: 1.Get Value 2.Get Webelements和Get Webelement 3.Get Window Titles 4.Go Back 和 Go To 5.Get List Items 6.Get Selected List

Python Selenium 搭建Web UI自动化

Python搭建UI自动化环境 下载Python3 Python官网 PyCharm 环境配置 安装Python 勾选Add Python to PATH,一直下一步. 验证:CMD输入Python 下载Chrome Driver 点击下载chromedriver 将驱动放入Python根目录下 安装PyCharm 转载:安装教程 安装Selenium 打开PyCharm 新建Python File 点击面板底部 Terminal 输入pip install selenium 安装.pip li

Selenium自动化测试之启动浏览器

一.Eclipse新建java工程 1.新建java工程:File->New->Java Project,输入Project name:如AutoTest,名称随意,点击Finish: 2.新建Package:选择AutoTest项目,右键->New->Package,输入name,如com.test.selenium,名称随意,点击Finish: 3.新建class类:选择com.test.selenium包,右键->New->Class,输入name,如:Test,

Selenium Web 自动化 - Selenium常用API

Selenium Web 自动化 - Selenium常用API 2016-08-01 1 WebElement相关方法2 iFrame的处理3 操作下拉选择框4 处理Alert5 处理浏览器弹出的新窗口6 执行JS脚本7 等待元素加载8 模拟键盘操作9 设置浏览器窗口大小10 上传文件11 Selenium处理HTML5 1 WebElement相关方法 Method   Summary void clear() If   this element is a text entry elemen