1. 操作cookie // 增加一个 name = "name",value="value" 的 cookie Cookie cookie = new Cookie("name", "value"); driver.manage().addCookie(cookie); // 得到当前页面下所有的 cookies ,并且输出它们的所在域.name.value.有效日期和路径 Set<Cookie> cookies…
1.简介 上一篇讲解和分享了如何获取浏览器窗口的句柄,那么今天这一篇就是讲解获取后我们要做什么,就是利用获取的句柄进行浏览器窗口的切换来分别定位不同页面中的元素进行操作. 2.为什么要切换窗口? Selenium在当前页面打开了新的窗口,此时就需要跳转到新的窗口去,就需要把窗口进行切换.宏哥这里简单举例一个测试场景,你在页面A点击一个连接,会在新的tab窗口打开页面B,这个时候,你在页面B点击一个连接,会在新的tab窗口打开页面C.这种情况,在测试中经常遇到,自动化中,webdriver是如何处…
Selenium自动化性能测试过程中,经常会出现取不到界面元素,主要原因是界面元素的加载与我们访问页面的时机不一致.可能是界面要素过多或者网络较慢,界面一直加载中:为了解决这种问题,selenium提供了等待方式,分为显式等待与隐式等待. 1.显式等待:显式等待,就是明确的要等到某个元素的出现或者是某个元素的可点击等条件,等不到,就一直等,除非在规定的时间之内都没找到,那么就跳出Exception.处理方式1:通过线程等待函数,让自动化测试做一定时间的等待,Thread.sleep(1000):…
总结:WEB UI自动化测试一般采用 POP(面向页面编程),自动化测试框架分三层,有时如果页面如果太多,不好管理,可以面向控件编程,即把控件当作页面,毕竟控件是有限的,所以封装页面的代码量会少很多,两种方式各有优劣.如果页面比较少的,建议可以全部封装为页面对象:如果页面比较多,而且跳转复杂,建议使用两者结合的方式,一级页面,二级页面封装,三级以上页面,就不需要封装,使用控件对象完成页面操作.利用封装好的页面对象/控件对象,再进一步完成业务关键字封装,比如登录,注册,添加商品,支付等等操作,这样…
操作浏览器的主要方法都来自 org.openqa.selenium.WebDriver 这个接口 这些方法都是在 org.openqa.selenium.remote.RemoteWebDriver这个类中实现的,然后不同浏览的 driver类继承RemoteWebDriver  1. 打开一个浏览器  //IE浏览器 System.setProperty("webdriver.ie.driver", ".\\Tools\\IEDriverServer.exe");…
一.场景:在未注销系统切换不同账号登录系统下,登录会有浏览器缓存,导致登录时间异常缓慢.跟开发浏览器缓存处理机制有关系. 二.解决方法: 获取浏览器Cookie,在Login方法前增加清除缓存的代码. import org.openqa.selenium.Cookie; //获得cookie Set<Cookie> coo = driver.manage().getCookies(); //打印Cookie logger.info(coo); //清除所有的缓存 driver.manage()…
隐式等待是等页面加载,不是等元素!!! 1.显式等待 一个显式等待是你定义的一段代码,用于等待某个条件发生然后再继续执行后续代码.显式等待是等元素加载!!! 2.隐式等待,相当于设置全局的等待,在定位元素时,对所有元素设置超时时间.隐式等待是等页面加载,而不是元素加载!!!(隐式等待就是针对页面的,显式等待是针对元素的.) 隐式等待使得WebDriver在查找一个Element或者Element数组时,每隔一段特定的时间就会轮询一次DOM,如果Element或数组没有马上被发现的话.默认设置是0…
NoSuchElementException 1.检查元素的定位器是否正确 2.如果定位器正确,增加休眠时间 3.等待了足够的时间依然找不到的话,更换定位器的定位方式 NoSuchWindowException 1.检查窗口切换的定位器是否正确 2.切换之前增加休眠时间 NoAlertPresentException 1.确保 alert 会出现 2.切换到 alert 之前增加休眠时间 NoSuchFrameException 1.检查 frame 切换的定位器是否正确 2.检查 frame…
org.openqa.selenium.interactions.Actions类,主要定义了一些模拟用户的鼠标mouse,键盘keyboard操作.对于这些操作,使用 perform()方法进行执行.可以完成单一的操作,也可以完成几个操作的组合. 1. 模拟鼠标操作 // 新建一个action Actions action = new Actions(driver); // 鼠标左键单击 action.click().perform(); // 鼠标左键双击 action.doubleClic…
1. iframe 的处理 查找元素必须在对应的 ifarme 中查找,否则是找不到的 // 传入参数为 frame 的序号,从0开始 driver.switchTo().frame(Int index); // 传入参数为 frame 的 ID 或者 Name 属性 driver.switchTo().frame(String nameOrId); // 传入参数为 frameElement driver.switchTo().frame(WebElement frameElement); /…