一、什么是selenium
Selenium的核心Selenium Core基于JsUnit,完全由JavaScript编写,因此可以用于任何支持JavaScript的浏览器上。
selenium可以模拟真实浏览器,自动化测试工具,支持多种浏览器
二、selenium webdriver定位元素的八种方式
在使用selenium webdriver进行元素定位时,通常使用findElement或者findElements方法结合By类返回的元素句柄来定位元素。其中By类的常用定位方式有8种
1、By.name()
2、By.id()
3、By.tagName --通过元素的标签来查找元素,搜索到的元素通常不止一个,一般结合findElements方法使用
例如:
WebDriver driver = new FirefoxDriver();
driver.get("http://www.forexample.com");
List<WebElement> buttons = driver.findElements(By.tagName("button"));
4、By.className() --通过元素的css样式表所引用的伪类名称来进行元素查找
5、By.linkText() --通过超文本链接的文字信息来定位元素
6、By.partialLinkText() --通过部分链接文字进行匹配
7、By.xpath()
注意:1、绝对路径以单/号表示,相对路径以//号表示 2、当xpath路径以/号开头时,表示让xpath解析引擎从文档的根节点开始解析;当xpath路径以//号开头时,表示让xpath解析引擎从文档的任意符合的元素节点开始解析
例如:查找页面根元素://
查找页面上的所有input元素://input
查找页面上第一个form元素的直接子input元素://form[1]/input
查找页面上id为loginForm的form元素://form[@id="loginForm"]
查找页面上具有name属性为username的input元素://input[@name="username"]
查找页面上具有name属性为continue并且type属性为button的input元素://input[@name="continue"][@type="button"]
8、By.cssSelector()
例如:定位id为first的div元素:#first 相当于xpath的 //div[@id=first]
三、控制浏览器的操作
1、WebDriver提供了manage().window().setSize()方法来设置浏览器大小
maximize()设置浏览器最大化
size()设置浏览器宽高
WebDriver driver= new ChromeDriver();
driver.get("https://www.baidu.cn");
driver.manage().window().maximize();
Thread.sleep(2000);
driver.get("https://m.baidu.cn");
driver.manage().window().setSize(new Dimension(480, 800));
Thread.sleep(2000);
2、WebDriver提供了back()和forward()控制浏览器后退和前进
back() 模拟浏览器的后退按钮
forward()模拟浏览器的前进按钮
3、刷新页面
refresh() 刷新页面(F5)
driver.navigate().refresh()
四、WebDriver常用方法
clear() 清除文本
sendkeys(*value) 模拟按键输入
click() 点击元素
submit() 提交表单
getSize() 返回元素的尺寸
getText() 获取元素的文本
getAttribute(name) 获得属性值 --返回元素的属性,可以是id、name、type或元素拥有的其他任意属性
isDisplayed() 设置该元素是否可见
五、模拟鼠标操作
在WebDriver中,将关于鼠标操作的方法封装在ActionChains类提供
contextClick() 右击
clickAndHold() 鼠标点击并控制
doubleClick() 双击
dragAndDrop() 拖动
release() 释放鼠标
perform() 执行所有Actions中存储的行为
WebDriver driver = new ChromeDriver();
driver.get("https://www.baidu.com");
WebElement search_setting = driver.findElement(BylinkText("设置"));
Actions action = new Actions(driver);
action.clickAndHold(search_setting).perform();
org.openqa.selenium.interactions.Actions导入提供鼠标操作的ActionChains类
Actions(driver)调用Actions()类,将浏览器驱动driver作为参数传入
clickAndHold()方法用户模拟鼠标悬停操作,在调用时需要指定元素定位
perform()执行所有ActionChains中存储的行为,可以理解成是对整个操作的提交动作
六、模拟键盘操作
Keys()类提供了键盘上所有按键的方法,sendkeys()方法可以用来模拟键盘输入,甚至是组合键
WebElement input = driver.findElement(By.id("kw"));
input.sendKeys(Keys.BACK_SPACE);
input.sendKeys(Keys.SPACE);
input.seneKeys(Keys.CONTROL,"v");
input.seneKeys(Keys.ENTER);
七、获取断言信息
getTitle():获取当前页面的标题
getCurrentUrl():获取当前页面的链接
getText():获取当前页面的文本信息
八、设置元素等待
WebDriver提供了两种等待方法:显示等待和隐示等待
显示等待:
WebDriverWait(driver,10,1),driver:浏览器驱动,10:最长的等待时间,默认以秒为单位,1:检测的间隔时间
隐示等待:
implicitlyWait():识别对象时的超时时间
pageLoadTimeOut():页面加载时的超时时间
九、多窗口切换
在页面操作过程中,有时点击某个链接会弹出新窗口,需要主机切换到新打开的窗口进行操作
WebDriver提供了switchTo().window()方法可实现在不同窗口之间切换
getWindowHandle():获得当前窗口句柄
getWindowsHandles():返回所有窗口句柄到当前会话
switchTo().windows():用于切换到不同窗口,例如driver.switchTo().windows(handle)
十、窗口截图
WebDriver提供了截图函数getScreenshotAs()来截取当前窗口
十一、浏览器cookie操作
WebDriver操作Cookie的方法
getCookies():获得所有cookie的方法
getCookiesNamed():返回字典的key为“name”的Cookie信息
addCookie(cookie_dict):添加cookie,cookie_dict指字典对象,必须有name和value
例如: Cookie c=new Cookie("key","value"); driver.manage().addCookie(c);
deleteCookieNamed(String name):删除cookie信息
deleteAllCookies():删除所有的cookie信息