Selenium-java基本使用归纳总结
环境安装
maven方式导入jar包
<!-- selenium-java -->
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-java</artifactId>
<version>3.4.0</version>
</dependency>
1.浏览器驱动
WebDriver driver = new ChromeDriver();
WebDriver driver = new FirefoxDriver();
WebDriver driver = new EdgeDriver();
WebDriver driver = new InternetExplorerDriver();
WebDriver driver = new OperaDriver();
2.元素定位
1).8种定位方法:id、name、class name、 tag name 、link text 、partial link text 、xpath、 css selector。对应方法如下:
findElement(By.id());
findElement(By.name());
findElement(By.className());
findElement(By.tagName());
findElement(By.linkText());
findElement(By.partialLinkText());
findElement(By.xpath());
findElement(By.cssSelector());
2).用法:
前四种标签使用较为简单,class name、 tag name 使用,如果有多个相同元素,则默认返回第一个元素。以下解释后四种。
以谷歌和https://www.baidu.com/为例
<a href="https://www.hao123.com?src=from_pc" target="_blank" class="mnav c-font-normal c-color-t">hao123</a>
通过link text(精准匹配超链接)定位:
driver.findElement(By.linkText("hao123");
通过partialLink text(使用精准或模糊匹配,如果有一个值,默认返回第一个值)定位:
driver.findElement(By.partialLinkText("hao")
driver.findElement(By.partialLinkText("123")
通过xpath定位:(我使用该方法一般使用浏览器元素选择功能复制xpath,通过选择器找到需要定位的元素,右键复制元素即可,这样也不容易出错)
通过css selector定位步骤如上。
3.控制浏览器操作
1).控制浏览器窗口大小
maximize() 设置浏览器最大化
setSize() 设置浏览器宽高
driver.manage().window().maximize();
driver.manage().window().setSize(new Dimension(450, 600));
2).控制浏览器后退、前进
back() 模拟浏览器后退按钮
forward() 模拟浏览器前进按钮
driver.navigate().back();
driver.navigate().forward();
3).刷新页面 refresh()
driver.navigate().refresh();
4.常用方法
clear() 清除文本。
sendKeys(*value) 模拟按键输入
click() 单击元素
submit()提交表单
getSize() 返回元素的尺寸
getText() 获取元素的文本
getAttribute(name) 获得属性值
isDisplayed() 设置该元素是否用户可见
close() 关闭当前窗口,如果它是当前打开的最后一个窗口,则退出浏览器
quit() 退出此驱动程序,关闭所有相关窗口
WebDriver driver = new ChromeDriver();
driver.get("https://www.baidu.com/");
WebElement size = driver.findElement(By.id("kw"));
size.getSize()
driver.close();
5.鼠标操作
contextClick() 右击
clickAndHold() 鼠标点击并控制
doubleClick() 双击
dragAndDrop() 拖动
release() 释放鼠标
perform() 执行所有Actions中存储的行为
Actions action = new Actions(driver);
action.doubleClick(driver.findElement(By.id("su"))).perform();
6.键盘操作
常用键盘操作全选、回车、删除、cv等等,对应操作有:
sendKeys(Keys.BACK_SPACE) 回格键(BackSpace) sendKeys(Keys.SPACE) 空格键(Space) sendKeys(Keys.TAB) 制表键(Tab) sendKeys(Keys.ESCAPE) 回退键(Esc) sendKeys(Keys.ENTER) 回车键(Enter) sendKeys(Keys.CONTROL,‘a’) 全选(Ctrl+A) sendKeys(Keys.CONTROL,‘c’) 复制(Ctrl+C) sendKeys(Keys.CONTROL,‘x’) 剪切(Ctrl+X) sendKeys(Keys.CONTROL,‘v’) 粘贴(Ctrl+V) sendKeys(Keys.F1) 键盘 F1
WebDriver driver = new ChromeDriver();
driver.get("https://www.baidu.com");
WebElement input = driver.findElement(By.id("kw"));
input.sendKeys("hello");
input.sendKeys(Keys.BACK_SPACE);
7.定位一组元素
针对第二部分描述,只需要在原来加一个s就可以获取一个List列表
findElements(By.id())
findElements(By.name())
findElements(By.className())
findElements(By.tagName())
findElements(By.linkText())
findElements(By.partialLinkText())
findElements(By.xpath())
findElements(By.cssSelector())
8.表单和窗口切换
1).表单切换。frame/iframe 表单嵌套页面需要通过 switchTo().frame()方法切换,frame()里传递的参数为定位frame的WebElement。
2).窗口切换。需要获取窗口权柄然后切换页面。
9.下拉框选择
Select类处理下拉框
WebElement element = driver.findElement(By.id("//select"));
Select sel = new Select(element);
sel.selectByValue("10");
10.警告框/alert处理
getText(): 返回 alert/confirm/prompt 中的文字信息。
accept(): 接受警告框。
dismiss(): 解散警告框。
sendKeys(keysToSend): 发送文本至警告框。
keysToSend: 将文本发送至警告框。
driver.switchTo().alert().accept();
11.截图/滚动截图
Selenium提供了一种功能,称为TakeScreenShot界面,可用于拍摄可视区域的屏幕截图,该接口提供getScreenshotAs的方法,可捕获屏幕截图并将其存储在所需的位置
File srcfile = ((TakesScreenshot) driver).getScreenshotAs(OutputType.FILE);
FileInputStream fileInputStream = new FileInputStream(srcfile);
PageSnapshot pageSnapshot = Shutterbug.shootPage(driver, Capture.FULL);
ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(pageSnapshot.getBytes());
12.浏览器cookies
getCookies() 获得所有 cookie 信息。
getCookieNamed(String name) 返回字典的key为“name”的Cookie信息。
addCookie(cookie dict) 添加Cookie。“cookie_dict”指字典对象,必须有 name和value值。
deleteCookieNamed(String name) 删除Cookie 信息。 “name”是要删除的 cookie的名称; “optionsString” 是该Cookie的选项,目前支持的选项包括“路径” , “域” 。
deleteAllCookies() 删除所有 cookie 信息。
WebDriver driver = new ChromeDriver();
driver.get("https://www.baidu.com");
Cookie cookie1 = new Cookie("name", "cookieName");
Cookie cookie2 = new Cookie("value", "cookieValue");
driver.manage().addCookie(c1);
driver.manage().addCookie(c2);
Set<Cookie> cookie = driver.manage().getCookies();
driver.manage().deleteAllCookies();
13.调用JavaScript
WebDriver提供了executeScript()方法来执行JavaScript代码
JavascriptExecutor driver_js = ((JavascriptExecutor) driver);
String js="window.location.href = 'https://www.baidu.com/';";
driver_js.executeScript(js);
[参考博客](https://blog.csdn.net/qq_22003641/article/details/79137327)
|