web自动化–selenium
了解自动化和selenium
自动化简介
selenium优点
1)开源免费
2)支持多浏览器
3)支持多系统
4)提供很多API
5)支持多语言
环境部署
驱动工作原理
eg.一个简单的自动化
public class Util {
public void test() throws InterruptedException {
ChromeDriver driver = new ChromeDriver();
Thread.sleep(3000);
driver.get("https://www.baidu.com/");
driver.findElement(By.cssSelector("#kw")).sendKeys("喜羊羊");
Thread.sleep(3000);
driver.findElement(By.cssSelector("#su")).click();
Thread.sleep(3000);
driver.quit();
}
}
public class FirstTest {
public static void main(String[] args) throws InterruptedException {
Util u = new Util();
u.test();
}
}
掌握selenium的基础语法
元素的定位方法
css选择器
driver.findElement(By.cssSelector("#kw")).sendKeys("喜羊羊");
xpath
元素的操作
点击–click、提交–submit
模拟按键输入–send_keys
driver.findElement(By.cssSelector("#kw")).sendKeys("喜羊羊");
清除对象输入的文本内容–clear()
driver.findElement(By.cssSelector("#kw")).sendKeys("喜羊羊");
driver.findElement(By.cssSelector("#kw")).clear();
driver.findElement(By.cssSelector("#kw")).sendKeys("-----");
获取文本–gettext
等待
代码执行速度很快,页面渲染速度相对较慢,故代码需要等待渲染完成,否则页面元素找不到
强制等待–线程sleep方法
隐式等待
在规定的时间范围内。轮询等待元素出现之后立即结束,如果在规定时间仍没出来,抛出异常NoSuchElementException。
显示等待
针对某一个元素进行测试
【显示和隐式不可一起使用,等待时间无法确定】
信息的打印
/**
* 信息打印
*/
public void printTest(){
String title = this.driver.getTitle();//打印标题
System.out.println("title" + title);
String currentUrl = this.driver.getCurrentUrl();
System.out.println("currentUrl" + currentUrl);//打印URL
}
窗口
1)获取当前页的句柄–getWindowHandle()
System.out.println(this.driver.getWindowHandle());//获取当前页的句柄,即唯一标识
2)获取所有标签页的句柄 --getWindowHandles()
Set<String> windowHandles = this.driver.getWindowHandles();
for (String s:windowHandles) {
System.out.println(s);
}
窗口切换–switchTo.window
switchTo().window("");// ”“中->是目标句柄
设置窗口大小–manage.window
driver.manage().window().maximize();//最大化
driver.manage().window().minimize();//最小化
driver.manage().window().setSize(new Dimension(1000,800));//自定义,宽 高
//编译js
driver.executeScript("window.scroll(0,document.body.scrollHeight)");//scrip:置底
driver.executeScript("window.scroll(0,document.body.scrollTop)");//scrip:置顶
导航–navigate
driver.navigate().back();//后退
driver.navigate().forward();//前进