接上一篇:自动化测试selenium(一)
1.信息打印
(1)打印标题:getTitle()
(2)打印url:getCurrenUrl()
public void printtest(){
//打印标题
String title = driver.getTitle();
System.out.println("title:"+title);
//进入到百度搜索首页,点击新闻连接
driver.findElement(By.cssSelector("#s-top-left > a:nth-child(1")).click();
//打印url
String curUrl = driver.getCurrentUrl();
System.out.println("url:"+curUrl);
}
2.窗口
2.1.句柄
selenium对每一个标签都给了唯一的标识,称之为句柄
如果有多个页面打开的话,selenium不知道当前应该操作哪个页面,所以它就会直接操作打开第一个页面,如果我们想要操作新打开的页面,就需要手动操作页面句柄。
(1)获取当前页面的句柄:getCurrentUrldriver.getWindowHandle(); 返回值类型为:String
//每个页面都有一个句柄(唯一标识)
//获取当前页面的句柄
String curwindow1 = driver.getWindowHandle();
System.out.println("curwindows-handle:"+curwindow1);
driver.findElement(By.cssSelector("#s-top-left > a:nth-child(1)")).click();
//获取当前页面的句柄2
String curwindow2 = driver.getWindowHandle();
System.out.println("curwindows-handle:"+curwindow2);
(2)获取所有标签页的句柄:getCurrentUrldriver.getWindowHandles();返回值为集合
//获取所有页面的句柄
Set<String> allwindows = driver.getWindowHandles();
for(String window:allwindows){
if(window != curwindow1){
//跳转到该句柄(页面)
driver.switchTo().window(window);
}
System.out.println("allwindow-handle:" + window);
//打印标题
String title = driver.getTitle();
System.out.println("title:"+title);
//打印url
String curUrl = driver.getCurrentUrl();
System.out.println("url:"+curUrl);
}
2.2.窗口的切换
从所有句柄中选择想要跳转的句柄(页面):
driver.switchTo().window(页面);括号里面是String类型
//获取所有页面的句柄
Set<String> allwindows = driver.getWindowHandles();
for(String window:allwindows){
if(window != curwindow1){
//跳转到该句柄(页面)
driver.switchTo().window(window);
}
System.out.println("allwindow-handle:" + window);
//打印标题
String title = driver.getTitle();
System.out.println("title:"+title);
//打印url
String curUrl = driver.getCurrentUrl();
System.out.println("url:"+curUrl);
}
2.3.窗口大小的设置
最大化:driver.manage().window().maximize();
最小化:driver.manage().window().minimize()
设置指定的尺寸:driver.manage().window.setSize(new Dimension(宽度,高度));
【注意】selenium不能够直接编译js语言,但是可以使用方法来执行js语言,方法如下:
driver.executeScript(); 括号的参数为js语言的字符串
public void windowtest() throws InterruptedException {
//窗口最大化
driver.manage().window().maximize();
Thread.sleep(2000);
//窗口最小化
driver.manage().window().minimize();
Thread.sleep(2000);
//设置指定宽高
driver.manage().window().setSize(new Dimension(1000,800));
Thread.sleep(2000);
//置顶与下拉
driver.executeScript("window.scroll(0,document.body.scrollHeight)");
Thread.sleep(2000);
driver.executeScript("window.scroll(0,document.body.scrollTop)");
Thread.sleep(2000);
}
2.4.导航
selenium里面提供了navigate接口来实现页面的导航
前进:driver.navigate().forward()
后退:driver.navigate().back()
//前进与后退
public void navigateTest() throws InterruptedException {
//点击页面,
driver.findElement(By.cssSelector("#page > div:nth-child(1) > div.tabs-wrap > ul > li:nth-child(2) > a")).click();
Thread.sleep(2000);
//后退操作
driver.navigate().back();
Thread.sleep(2000);
//前进操作
driver.navigate().forward();
Thread.sleep(2000);
}
2.5.弹窗
在前端代码里定位到普通的弹窗都可以使用driver.findElement()方法来定位元素
首先需要切换到警告框:
Alert alert = driver.switchTo().alert();
然后点击确认按钮或取消按钮:
//确认按钮
alert.accept();
alert.dismiss();
如果需要发送信息:
alert.senKey("");
2.6.鼠标和键盘
首先需要创建一个action对象:
Actions actions = new Actions(driver);
(1)鼠标
移动到指定元素并且保持:
actions.clickAndHold(Webelement ele).perform();
移动到指定元素并点击:
actions.click().perform();
(2)键盘
senKey("");
2.7.选择框
创建对象:
Select select = new Select(WebElement ele);//ele 需要指定对象才能进行操作
有三种方法
(1)方法一:通过索引来选择
select.selectByIndex();//括号里面的参数是索引值,从0开始
(2)通过value属性来选择
select.selectByValue("Value");
(3)通过可见的元素来选择:
select.selectByvisibleText("");
2.8.文件的上传
我们在进行文件上传的时候会打开一个系统窗口,但是selenium是不能操作这个系统窗口的。因此这里另辟蹊径,直接使用文件的路径+文件名
driver.findElement(By).senKeys("文件的路径+文件名");
driver.get("http://localhost:1375/autoTest1/target/testdaima/fileupload.html");
driver.manage().timeouts().implicitlyWait(Duration.ofSeconds(3));
//文件上传
public void fileupload() throws InterruptedException {
WebElement ele = driver.findElement(By.cssSelector("body > p > input[type=file]"));
ele.sendKeys("D:\\test\\aa.txt");
Thread.sleep(3000);
}
2.9.屏幕截图
这里首先需要说明的一点是:代码的执行速度比页面渲染的速度要更快,因此,如果要想顺利截图,程序不报错的情况下,我们需要添加等待。
屏幕截图:
driver.getScreenshotAs(Outpute.x);//x可以是:File,Base64,bytes
示例:
//屏幕截图
public void screenshotTest() throws IOException {
//百度搜索关键词并验证结果页
driver.findElement(By.cssSelector("#kw")).sendKeys("selenium");
driver.findElement(By.cssSelector("#su")).click();
//屏幕截图
File srcfile = driver.getScreenshotAs(OutputType.FILE);
//将屏幕截图保存在我们指定的路径下
File filename = new File(".src/test/autoPic/my.png");
FileUtils.copyFile(srcfile,filename);
driver.findElement(By.cssSelector("#\\32 > div > div > h3 > a"));
}
完!selenium的基本介绍就到这里了,如果以后有机会更加深入地学习的话,再来重新更新!