Selenium基础

一、什么是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信息

原文地址:https://www.cnblogs.com/testerlina/p/10390800.html