一、环境搭建(以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文件中添加依赖
<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>
import org.openqa.selenium.chrome.ChromeDriver;public class Main {public static void main(String[] args) {WebDriver webDriver = new ChromeDriver();}
}
二、元素定位
1.CSS选择
(1)类选择器
class=""
webDriver.findElement(By.cssSelector(".前端样式类名"));
(2)id选择器
webDriver.findElement(By.cssSelector("#前端样式类名"));
(3)标签选择器
标签名作为定位
2.xpath
webDriver.findElement(By.xpath("//*[@id=\"s-top-left\"]/a[1]")).click();
(1)绝对路径
(2)相对路径
相对路径+索引
相对路径+属性值
相对路径+通配符
相对路径+文本匹配
3.css选择器 vs xpath
CSS选择器定位元素效率高
三、操作测试对象
1.click
点击对象
webDriver.findElement(By.cssSelector("#kw")).click();
2.send_key
在对象上模拟按键输入
webDriver.findElement(By.cssSelector("#kw")).sendKeys("你好");
3.clear
清除对象输入的文本内容
4.submit
提交
点击元素需是在form标签内
5.text
获取元素文本信息
四、等待
1.sleep(等待时间)
强制等待
2.隐式等待
最长等待某个时间点,获取到页面元素,就执行下面代码,如果这个时间还没有找到元素就报错。
WebDriverWait wait= new WebDriverWait(webDriver,3000);
五、打印信息
1.title
获取title
String title= webDriver.getTitle();
2.获取url
String url= webDriver.getCurrentUrl();
六、浏览器操作
1.浏览器最大化
webDriver.manage().window().maximize();
2.设置浏览器大小
webDriver.manage().window().setSize(new Dimension(长度,宽度));
3.浏览器前进和后退
后退
webDriver.navigate().back();
前进
webDriver.navigate().forward();
webDriver.navigate().to("网址");
等同于 webDriver.get();
4.滚动条
((JavascriptExecutor)webDriver).executeScript("document.documentElement.scrollTop=10000");
5.关闭浏览器
webDriver.quit();
webDriver.close();
区别:
1.quit关闭整个浏览器,close关闭当前页面
2.quit清空缓存,close不会清空缓存
七、键盘按键
1.键盘按键使用
webDriver.findElement(By.cssSelector("#kw")).sendKeys(Keys.CONTROL);
2.组合键使用
webDriver.findElement(By.cssSelector("#kw")).sendKeys(Keys.CONTROL,"A");
八、鼠标事件
//创建 Actions
Actions action=new Actions(webDriver);//找到按钮
WebElement target= webDriver.findElement(By.cssSelector(".a3"));//鼠标移动到这个按钮
action.moveToElement(target).contextClick().perform();
九、选择框
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();}}
十、上传文件
webDriver.get("");
webDriver.findElement(By.xpath("/html/body/input")).sendKeys("上传文件名");
十一、frame
webDriver.switchTo().frame("id名");
十二、下拉框
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 没有对话框就不能用了,不然会报错
//输入弹窗
webDriver.switchTo().alert().sendKeys("name");//点击确定webDriver.switchTo().alert().accept();//点击取消webDriver.switchTo().alert().dismiss();
十四、窗口切换
//当前窗口句柄String cur_handle=webDriver.getWindowHandle();//当前浏览器当前所有句柄Set<String> all_handles=webDriver.getWindowHandles();String target="";for(String temp :all_handles){target=temp;}//切换窗口句柄webDriver.switchTo().window(target);
十五、截图
下载依赖
<dependency><groupId>commons-io</groupId><artifactId>commons-io</artifactId><version>2.11.0</version>
</dependency>
File file=((TakesScreenshot) webDriver).getScreenshotAs(OutputType.FILE);
//file保存磁盘FileUtils.copyFile(file,new File("保存路径"));