一、环境搭建(以java为例)
1.下载chrome浏览器
https://www.google.cn/intl/zh-CN/chrome/
2.查看chrome浏览器版本
设置+关于chrome
3.下载chrome浏览器驱动
下载浏览器对应版本的
ChromeDriver - WebDriver for Chrome - Downloads
120以上版本:Chrome for Testing availability
4.配置环境变量
点击我的电脑/此电脑>>右键点击属性>>点击高级系统设置>>环境变量>>系统变量。
点击系统变量中的path,点击新增,并将驱动的安装目复制填入后,点击确定。
5.Java创建项目,添加pom文件中添加依赖
java
<dependencies>
<!-- https://mvnrepository.com/artifact/org.seleniumhq.selenium/selenium-java -->
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-java</artifactId>
<version>3.141.59</version>
</dependency>
</dependencies>
java
import org.openqa.selenium.chrome.ChromeDriver;
public class Main {
public static void main(String[] args) {
WebDriver webDriver = new ChromeDriver();
}
}
二、元素定位
1.CSS选择
(1)类选择器
class=""
java
webDriver.findElement(By.cssSelector(".前端样式类名"));
(2)id选择器
java
webDriver.findElement(By.cssSelector("#前端样式类名"));
(3)标签选择器
标签名作为定位
2.xpath
java
webDriver.findElement(By.xpath("//*[@id=\"s-top-left\"]/a[1]")).click();
(1)绝对路径
(2)相对路径
相对路径+索引
相对路径+属性值
相对路径+通配符
相对路径+文本匹配
3.css选择器 vs xpath
CSS选择器定位元素效率高
三、操作测试对象
1.click
点击对象
java
webDriver.findElement(By.cssSelector("#kw")).click();
2.send_key
在对象上模拟按键输入
java
webDriver.findElement(By.cssSelector("#kw")).sendKeys("你好");
3.clear
清除对象输入的文本内容
4.submit
提交
点击元素需是在form标签内
5.text
获取元素文本信息
四、等待
1.sleep(等待时间)
强制等待
2.隐式等待
最长等待某个时间点,获取到页面元素,就执行下面代码,如果这个时间还没有找到元素就报错。
java
WebDriverWait wait= new WebDriverWait(webDriver,3000);
五、打印信息
1.title
获取title
java
String title= webDriver.getTitle();
2.获取url
java
String url= webDriver.getCurrentUrl();
六、浏览器操作
1.浏览器最大化
java
webDriver.manage().window().maximize();
2.设置浏览器大小
java
webDriver.manage().window().setSize(new Dimension(长度,宽度));
3.浏览器前进和后退
后退
java
webDriver.navigate().back();
前进
java
webDriver.navigate().forward();
java
webDriver.navigate().to("网址");
等同于 webDriver.get();
4.滚动条
java
((JavascriptExecutor)webDriver).executeScript("document.documentElement.scrollTop=10000");
5.关闭浏览器
javascript
webDriver.quit();
webDriver.close();
区别:
1.quit关闭整个浏览器,close关闭当前页面
2.quit清空缓存,close不会清空缓存
七、键盘按键
1.键盘按键使用
java
webDriver.findElement(By.cssSelector("#kw")).sendKeys(Keys.CONTROL);
2.组合键使用
java
webDriver.findElement(By.cssSelector("#kw")).sendKeys(Keys.CONTROL,"A");
八、鼠标事件
java
//创建 Actions
Actions action=new Actions(webDriver);
//找到按钮
WebElement target= webDriver.findElement(By.cssSelector(".a3"));
//鼠标移动到这个按钮
action.moveToElement(target).contextClick().perform();
九、选择框
java
List <WebElement> webElements=webDriver.findElements(By.cssSelector("input"));
for(int i=0;i<webElements.size();i++){
//getAttribute获取页面上的元素属性
if(webElements.get(i).getAttribute("type").equals("radio")){
webElements.get(i).click();
}
}
十、上传文件
java
webDriver.get("");
webDriver.findElement(By.xpath("/html/body/input")).sendKeys("上传文件名");
十一、frame
java
webDriver.switchTo().frame("id名");
十二、下拉框
java
WebElement webElement= webDriver.findElement(By.cssSelector("#ShippingMethod"));
Select select=new Select(webElement);
select.selectByIndex(1);
select.selectByValue("8.34");
十三、alert、confirm、prompt 的处理
text 返回alert/confirm/prompt 中的文字信息
accept 点击确认按钮
dismiss 点击取消按钮,如果有的话
send_keys 输入值,如果alert 没有对话框就不能用了,不然会报错
java
//输入弹窗
webDriver.switchTo().alert().sendKeys("name");
//点击确定
webDriver.switchTo().alert().accept();
//点击取消
webDriver.switchTo().alert().dismiss();
十四、窗口切换
java
//当前窗口句柄
String cur_handle=webDriver.getWindowHandle();
//当前浏览器当前所有句柄
Set<String> all_handles=webDriver.getWindowHandles();
String target="";
for(String temp :all_handles){
target=temp;
}
//切换窗口句柄
webDriver.switchTo().window(target);
十五、截图
下载依赖
java
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.11.0</version>
</dependency>
java
File file=((TakesScreenshot) webDriver).getScreenshotAs(OutputType.FILE);
//file保存磁盘
FileUtils.copyFile(file,new File("保存路径"));