一、启动浏览器
1.设置驱动所在的位置:System.setProperty("webdriver.gecko.driver", ".\\tools\\geckodriver.exe");
System.setProperty("webdriver.chrome.driver", ".\\tools\\chromedriver.exe");
System.setProperty("webdriver.ie.driver", ".\\tools\\IEDriverServer.exe");
2.实例化浏览器驱动:WebDriver driver = new ChromeDriver() / FirefoxDriver() / InternetExplorerDriver();
3.打开网址:driver.get("网址"); \ driver.navigate().to("网址");
二、操作浏览器
1.后退:driver.navigate().back();
2.前进:driver.navigate().forward();
3.刷新:driver.navigate().refresh();
4.最大化:driver.manage().window().maximize();
5.设置浏览器大小:driver.manage().window().setSize(new Dimension(width,height));
6.获取当前网址:driver.getCurrenturl();
7.获取网页标题:driver.getTitle();
8.关闭浏览器:driver.close(); / driver.quit();
三、定位页面元素
1.通过id定位:driver.findElement(By.id("id值"));
2.通过name定位:driver.findElement(By.name("name值"));
3.通过链接的全部文字定位:driver.findElement(By.linkText("链接的全部文字"));
4.通过链接的部分文字定位:driver.findElement(By.partialLindkText("链接的部分文字"));
5.通过class定位:driver.findElement(By.className("class值"));
6.通过css定位:driver.findElement(By.cssSelector("css 定位表达式"));
7.通过xpath定位:driver.findElement(By.xpath("xpath 定位表达式"));
8.通过标签名定位:driver.findElement(By.tagName("标签名"));
四、常用的控件操作
1.输入框
①输入:sendKeys()
②点击:click()
③清空:clear()
④获取输入的文本:getAttribute("value")
2.嵌套框架跳转
①通过索引定位:driver.switchTo().frame(index);
②通过id、name:driver.switchTo().frame("name值 \ id值");
③通过定位元素定位语句:driver.switchTo().frame(元素定位语句);
④跳回默认框架:driver.switchTo().defaultContent();
⑤跳回上一级框架:driver.switchTo().parentFrame();
3.弹出框处理
①声明弹出框
Alert alter = driver.switchTo().alert();
②操作弹出框
确认:alert.accept();
取消:alert.accept();
输入:alert.accept();
4.多个页面之间的切换
获取当前句柄:driver.getWindowHandle();
句柄:一个无序的字符串,有页面就有句柄
①获取所有页面句柄:List<String> handles = driver.getWindowHandles();
②循环判断找到要跳转的页面句柄:
for(String handle:handles){
driver.switchTo().window(handle);
if("标题名字".equals(driver.getTitle())){//判断当前页面的标题是否与你要跳转的页面标题一样
break;
}
}
五、WebDriver特殊操作
1.截图
File file = ((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE);
绝对路径:FileUtils.copyFile(file,newFile("D:\\截图\\a.png"));
FileUtils.copyFile(file,newFile("D:\\截图",a + ".png"));
相对路径:FileUtils.copyFile(file,newFile("截图","a.png"));//截图为该工程根目录下的目录
2.下拉框
Select s = new Select(定位语句);
①通过索引:s.selectByIndex(索引);
②通过value值:s.selectByValue("value值");
③通过可见文本:selectByVisiableText("可见文本");
3.上传文件
driver.findElement(定位元素).sendKeys("文件所在位置");
4.时间等待
①线程等待:Tread.sleep(1000单位是毫秒);
②隐式等待:driver.manage().timeouts().implicitlyWait(10单位是秒,TimeUnit.SECONDS);//放在需要等待的语句前面
③显式等待:WebDriverWait wait = new WebDriverWait(driver, 10, 1);
六、模拟鼠标和键盘操作
1.Actions类
Actions action = new Actions(driver);
①左击:action.click(元素定位语句).perform();
②右击:action.contextclick(元素定位语句).perform();
③双击:action.doubleclick(元素定位语句).perform();
如果没有写定位语句则在鼠标当前停留位置操作
④鼠标悬停:action.moveToElement(元素定位语句).perform();
⑤按下Shift键:action.keyDown(Keys.SHIFT);
⑥释放Shit键:action.keyUp(Keys.SHIFT);
⑦拖动元素:
拖动到指定位置:action.dragAndDropBy(元素,X坐标,Y坐标).build().perform();
拖动到某个元素上:action.dragAndDrop(被拖动元素,目标元素).perform();
2.键盘输入
定位输入框:WebElement a = driver.findElement(输入框定位);
①输入数据:a.sendKeys("数据");
②回删:a.sendKeys(Keys.BACK_SPACE);
③输入空格:a.sendKeys(Keys.SPACE);
④全选:a.sendKeys(Keys.CONTROL,"a");
⑤复制:a.sendKeys(Keys.CONTROL,"c");
⑥剪切:a.sendKeys(Keys.CONTROL,"x");
⑦粘贴:a.sendKeys(Keys.CONTROL,"v");