1.定位元素方式:
①css选择器;②xpath选择器
两个谁更好?
css选择器更好一点,平常都使用css选择器,效率更高。
webDriver提供了一系列的对象定位方法
2.css选择器:可以采用页面的属性如id、name、class、标签等进行元素定位
下面以百度网页为例子
①采用id、class实现定位百度的输入框
webDriver.findElement(By.cssSelector("#kw")); webDriver.findElement(By.cssSelector(".s_ipt"));
在By.cssSelector("")中的属性可以直接复制,在开发者工具中,进行复制想要的元素的selector
如想要当前这个新闻超链接
在开发者工具中选中这个新闻的位置,右键->copy->copy selector即可
3.xpath定位
实现用xpath定位新闻的位置,右键->copy->copy xpath
webDriver.findElement(By.xpath("//*[@id=\"s-top-left\"]/a[1]"));
4.WebDriver API
①sendKeys 往输入框里面输入值
webDriver.findElement(By.cssSelector("#kw")).sendKeys("测试开发");
②click点击对象
当往输入框里面输入值时,点击“百度一下”按钮
webDriver.findElement(By.cssSelector("#kw")).sendKeys("测试开发");
webDriver.findElement(By.cssSelector("#su")).click();
③submit提交
submit和click实现的方法是一样的
区别:如果点击的元素是放在form标间中的,此时使用submit实现的效果和click的效果时一样的。若不是放在form标签中的,则不能够实现,
④clear清除:清除对象输入的文本内容
webDriver.findElement(By.cssSelector("#kw")).sendKeys("测试开发");
webDriver.findElement(By.cssSelector("#su")).click();
webDriver.findElement(By.cssSelector("#kw")).clear();
⑤text:用于获取元素的文本信息
获取“百度一下”这个按钮中的文字
String value = webDriver.findElement(By.cssSelector("#su")).getAttribute("value");
System.out.println(value);
⑥等待
(1)强制等待
sleep(2000);
(2)隐式等待
webDriver.manage().timeouts().implicitlyWait(3, TimeUnit.DAYS);
(3)显示等待
WebDriverWait wait = new WebDriverWait(webDriver,3000); wait.until(ExpectedConditions.elementToBeClickable(By.cssSelector("#su")));
隐式等待显示等待的区别:隐式等待是等待页面的所有元素,显示等待是等待一定条件的元素
⑦浏览器操作
(1)浏览器前进、后退、刷新
webDriver.findElement(By.cssSelector("#kw")).sendKeys("软件测试"); webDriver.findElement(By.cssSelector("#su")).click(); sleep(2000); webDriver.navigate().back(); sleep(2000); webDriver.navigate().refresh(); sleep(2000); webDriver.navigate().forward();
(2)浏览器最大化、全屏、设置规定的高和宽
webDriver.manage().window().maximize(); sleep(2000); webDriver.manage().window().fullscreen(); sleep(2000); webDriver.manage().window().setSize(new Dimension(600,1000));
(3)浏览器滚动条
webDriver.findElement(By.cssSelector("#kw")).sendKeys("软件测试");
webDriver.findElement(By.cssSelector("#su")).click();
sleep(2000);
((JavascriptExecutor)webDriver).executeAsyncScript("document.documentElement.scrollTop=19999");//设置页面到做底端,这个数字随便写
⑧键盘事件
全选、复制、剪切、粘贴
webDriver.findElement(By.cssSelector("#kw")).sendKeys("软件测试"); webDriver.findElement(By.cssSelector("#kw")).sendKeys(Keys.CONTROL,"A"); webDriver.findElement(By.cssSelector("#kw")).sendKeys(Keys.CONTROL,"C"); sleep(2000); webDriver.findElement(By.cssSelector("#kw")).sendKeys(Keys.CONTROL,"X"); sleep(2000); webDriver.findElement(By.cssSelector("#kw")).sendKeys(Keys.CONTROL,"V");
⑨鼠标事件
移动、右击
WebElement webElement = webDriver.findElement(By.cssSelector("#s-top-left > a:nth-child(1)"));找到当前的元素 Actions actions = new Actions(webDriver); actions.moveToElement(webElement).contextClick().perform();perform一定要写,不然不起效果
双击
actions.moveToElement(webElement).doubleClick().perform();
⑩多层框架定位:当我们想要单击frame框架里面的按钮时
webDriver.switchTo().frame("按钮的标签");
⑪下拉框
WebElement webElement = webDriver.findElement(By.cssSelector("button")); Select select = new Select(webElement); select.selectByIndex(3);这里的下标是从0开始,也可以是selectByValue、selectByVisibleText
⑫alter处理
/*弹窗取消*/ webDriver.switchTo().alert().dismiss(); /*弹窗输入值*/ webDriver.switchTo().alert().sendKeys("成功"); /*弹出确认*/ webDriver.switchTo().alert().accept();
⑬上传文件
webDriver.findElement(By.cssSelector("input")).sendKeys("上传文件的路径");
⑭关闭浏览器
close和quit的区别:
1.quit是关闭整个浏览器,close是关闭get打开的页面
2.quit清空缓存,close不会清空缓存
webDriver.close(); webDriver.quit();
⑮切换窗口
getWindowHandles:获取所有窗口的句柄
getWindowHandle:获取get申请页面所跳转的那个页面的句柄
webDriver.getWindowHandles();
⑯截图
要添加commos-io的依赖
File file = ((TakesScreenshot)webDriver).getScreenshotAs(OutputType.FILE); FileUtils.copyFile(file,new File("D:\\IDEA\\CeShi\\aaa.png"));保存文件的路径和名字