干货来袭——WebDriver系列学习笔记
Posted 自动化软件测试
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了干货来袭——WebDriver系列学习笔记相关的知识,希望对你有一定的参考价值。
WebDriver系列学习笔记(三)——一步进阶
一、选择哪种WebDriver
Webdriver的4种实现都有各自的好处,我们该具体使用哪种实现呢?
就执行速度来说,htmlUnit Driver表现的相当棒,但是它不是可视化的,当你需要向别人展示你的自动化成果时,选择HtmlUnit Driver明显是个错误!
其他三种实现大同小异,但是这里要特别提一下Firefox Driver,Firefox的启动速度实在是不敢恭维。。。所以你懂得!
二、页面导航
实现页面导航最通常的方法是调用get(String str)方法:
driver.get("http://baidu.com");
在将控制权转回测试脚本时,WebDriver会等待页面完全加载,如果页面上面使用了大量的Ajax的话,那么,WebDriver就傻逼了,它不知道页面什么时候会加载完,所以这时候你就得考虑等待时间了,通常使用的方法是waits();
三、页面交互
你想要跟页面进行交互,首先你得知道如何定位页面中你想操作的元素,你可以通过页面元素的id,name,xpath等来找到它!下面我们来探讨一下主要元素的定位以及常用操作
1、文本框(textField)
我们还以百度为例,打开百度首页,在文本框中输入WebDriver!输入的动作使用sendKeys(String str)方法
package com.tencent;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.firefox.FirefoxDriver;public class TestSelenium {
public static void main(String[] args) {
System.setProperty ( "webdriver.firefox.driver" , "D:/Program Files/Mozilla Firefox/firefox.exe" );
WebDriver driver = new FirefoxDriver();
driver.get("http://www.baidu.com");
WebElement textField = driver.findElement(By.id("kw")); //by id
//WebElement textField = driver.findElement(By.name("wd")); by name
//WebElement textField = driver.findElement(By.xpath("//input[@id='id']")); by xPath
textField.sendKeys("webdriver");
}
}
运行后会发现,webdriver打开了firefox,并访问百度首页,在搜索框中输入webdriver关键字。
如果你想清空某textField的内容,则可以这么干
textField.clear();这里需要注意的地方是,一旦你选择使用xpath去匹配元素,如果当前页面上有多个元素与指定的xpath匹配,那么只会返回第一个,如果一个也匹配不到,那么NoSuchElementException已经将会抛出!
2、按钮
小练习:访问百度,在搜索框中输入webdriver,点击百度一下按钮
WebElement button = driver.findElement(By.id("su"));
button.click();找到按钮,执行点击操作!除了点击百度一下按钮进行提交意外,webdriver还对WebElement封装了自己的提交方法:textField.submit();点击按钮的操作除了调其本身的click()方法,同时也可以使用如下方法:button.sendKeys(Keys.ENTER);上面方法的实质是模拟了键盘的操作,发送了一次回车命令!3、单选框(Radiobox)和复选框(checkbox)public static void main(String[] args) {
System.setProperty ( "webdriver.firefox.driver" , "D:/Program Files/Mozilla Firefox/firefox.exe" );
WebDriver driver = new FirefoxDriver();
driver.get("https://passport.baidu.com/?login&tpl=mn");
WebElement checkbox = driver.findElement(By.id("mem_pass")) ; //by id
checkbox.click();
}通过点击开控制checkbox和Radiobox的选择和取消选择(Radiobox一旦选中不可取消),这点没有watir人性化,watir可以通过这样来控制选中和不选中:checkbox.set();
checkbox.chear();
以上是关于干货来袭——WebDriver系列学习笔记的主要内容,如果未能解决你的问题,请参考以下文章
Mixly第35课~第37课,课程学习笔记 | Mixly米思齐纯干货系列