HTML前端:webdriver总结
2017-11-28 本文已影响364人
果芽软件
一、依赖jar包
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-java</artifactId>
<version>2.50.0</version>
</dependency>
一、启动浏览器
1. 支持浏览器种类
驱动名称 | 操作系统 | webriver实现类 |
---|---|---|
HtmlUnit Driver | All | org.openqa.selenium.htmlunit.HtmlUnitDriver |
Firefox Driver | All | org.openqa.selenium.firefox.FirefoxDriver |
Internet Explorer Driver | Windows | org.openqa.selenium.ie.InternetExplorerDriver |
Chrome Driver | All | org.openqa.selenium.chrome.ChromeDriver |
2. 打开浏览器
打开firefox浏览器:
WebDriver driver = new FirefoxDriver();
打开IE浏览器
WebDriver driver = new InternetExplorerDriver ();
打开HtmlUnit浏览器
WebDriverdriver = new HtmlUnitDriver();
打开chrome浏览器
WebDriverdriver = new ChromeDriver();
3. firefox
//启动默认安装路径下的ff
public void StartFireFoxByDefault(){
System.out.println("start firefox browser...");
WebDriver driver = new FirefoxDriver(); //直接new一个FirefoxDriver即可
Navigation navigation = driver.navigate();
navigation.to("http://www.baidu.com/");
System.out.println("start firefox browser succeed...");
}
4. chrome
public static void StartChrome(){
System.out.println("启动chrome浏览器...");
//指定驱动路径
System.setProperty("webdriver.chrome.driver", "files\\chromedriver.exe");
WebDriver driver = new ChromeDriver();
driver.get("http://www.baidu.com/");
System.out.println("启动chrome浏览器成功...");
}
5. 启动IE
public static void StartIE(){
System.out.println("start firefox browser...");
System.setProperty("webdriver.ie.driver", "files\\IEDriverServer.exe");
WebDriver driver = new InternetExplorerDriver();
driver.get("http://www.baidu.com/");
System.out.println("start firefox browser succeed...");
}
二、打开网页
1. 打开界面
driver.navigate().to( "http://www.example.com" );
或
driver.get( "http://www.example.com" );
navigate().to()和get()功能完全一样。
2. 新界面、前进、后退和刷新
driver.navigate().to("要打开的新地址");
driver.navigate().forward();
driver.navigate().back();
driver.navigate().refresh();
写好driver.navigate()后,输入"."查看可选方法列表(剔除object的方法)
image.png
二、元素定位
1. 测试例子
<input class="input_class" type="text" name="passwd" id="passwd-id" />
2. By.id:
WebElement element = driver.findElement(By.id("passwd-id"));
3. By.name:
WebElement element = driver.findElement(By.name("passwd"));
4. By.className
WebElement element = driver.findElement(By.className("input_class"));
5. By.cssSelector
## '':标签选择器
WebElement element = driver.findElement(By.cssSelector("input"));
## '#':id选择器
WebElement element = driver.findElement(By.cssSelector("#passwd-id"));
## '.':class选择器
WebElement element = driver.findElement(By.cssSelector(".input_class"));
## '[id=passwd-id]':属性选择器
WebElement element = driver.findElement(By.cssSelector(".input_class"));
6. By.xpath:
WebElement element =driver.findElement(By.xpath("//input[@id='passwd-id']"));
6. By.linkText:
//通俗点就是精确查询
WebDriver driver = new FirefoxDriver();
driver.get("http://www.baidu.com/");
WebElement element = driver.findElement(By.linkText("百科"));
7. By.partialLinkText:
//这个方法就是模糊查询
WebDriver driver = new FirefoxDriver();
driver.get("http://www.baidu.com/");
WebElement element = driver.findElement(By.partialLinkText("hao"));
三、XPATH语法
1. xpath插件
- 下载chrome的xpath插件
-
添加到chrome的扩展区(拖进去就行)
image.png -
使用xpath插件,shift选择元素,自动生成xpath值
image.png
2. xpath常用符号:
符号 | 含义 | 示例 |
---|---|---|
/ | 表示绝对路径绝对路径是指从根目录开始 | |
// | 表示相对路径 | |
. | 表示当前层 | |
.. | 表示上一层 | |
* | 表示通配符 | |
@ | 表示属性,多个用and或or | |
[] | 属性的判断条件表达式 |
3. xpath常用函数:
函数名 | 示例 | 用途 |
---|---|---|
contains () | //div[contains(@id,'widget')] | 选择id属性中包含'widget'的div |
text() | //a[text()='hello world'] | 选择文本值为'hello world'的节点 |
last() | 选择最后一个 | |
starts-with() | //div[starts-with(@id,'common')] | 选择id属性中’common’开头的div节点 |
not() | 否定 |
三、基本元素操作
1. 文件上传
WebElement load = this.locateElementByXpath(locator);
load.sendKeys(path);
2. 按钮
WebElement submit = this.locateElementByXpath(locator);
submit.click();
submit.isEnabled();
3. 选择框
按下标选
WebElement element = this.locateElementByXpath(locator);
Select select = new Select(element);
select.selectByIndex(index);
4. 输入框
WebElement input = this.locateElementByCss(locator);
input.clear();
input.sendKeys(content);
5. 单选框
WebElement radio = this.locateElementByXpath(locator);
radio.click();
radio.isSelected();
6. 复选框
WebElement checkbox = this.locateElementByXpath(locator);
checkbox.click();
checkbox.isSelected();
2. 超链接
WebElement link = this.locateElementByXpath(locator);
link.click();
按值选
WebElement element = this.locateElementByXpath(locator);
Select select = new Select(element);
select.selectByValue(value);
//select.selectByVisibleText(text);
6. 按钮
WebElement submit = this.locateElementByXpath(locator);
submit.click();
submit.isEnabled();
8. 关闭和退出
public void closeBrowser()
{
driver.close();
driver.quit();
}
四、窗口操作
3. 切换到alert框
Alert alert = driver.switchTo().alert();
4. 切换到窗口
driver.switchTo().window( "windowName" );
或者
for (String handle : driver.getWindowHandles()) {
driver.switchTo().window(handle);
}
5. 切换到iframe
driver.switchTo().frame( "frameName" );
通过索引访问subframe:
driver.switchTo().frame( "frameName.0.child" );(frameName的第一个subframe的明价child的frame)