maven方式导入jar包
org.seleniumhq.selenium
selenium-java
3.4.0
WebDriver driver = new ChromeDriver();//Chrome浏览器
WebDriver driver = new FirefoxDriver();//Firefox浏览器
WebDriver driver = new EdgeDriver();//Edge浏览器
WebDriver driver = new InternetExplorerDriver();//IE浏览器
WebDriver driver = new OperaDriver();//Opera浏览器
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">hao123a>
通过link text(精准匹配超链接)定位:
driver.findElement(By.linkText("hao123");
通过partialLink text(使用精准或模糊匹配,如果有一个值,默认返回第一个值)定位:
driver.findElement(By.partialLinkText("hao")
driver.findElement(By.partialLinkText("123")
通过xpath定位:(我使用该方法一般使用浏览器元素选择功能复制xpath,通过选择器找到需要定位的元素,右键复制元素即可,这样也不容易出错)
通过css selector定位步骤如上。
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();
clear() 清除文本。
sendKeys(*value) 模拟按键输入
click() 单击元素
submit()提交表单
getSize() 返回元素的尺寸
getText() 获取元素的文本
getAttribute(name) 获得属性值
isDisplayed() 设置该元素是否用户可见
close() 关闭当前窗口,如果它是当前打开的最后一个窗口,则退出浏览器
quit() 退出此驱动程序,关闭所有相关窗口
//以上方法首先都是实例化浏览器驱动,请求指定页面,获取/定位到需要操作的元素,然后执行相关方法
//eg
WebDriver driver = new ChromeDriver();
driver.get("https://www.baidu.com/");
//获得百度输入框的尺寸
WebElement size = driver.findElement(By.id("kw"));
size.getSize()
//关闭浏览器
driver.close();
contextClick() 右击
clickAndHold() 鼠标点击并控制
doubleClick() 双击
dragAndDrop() 拖动
release() 释放鼠标
perform() 执行所有Actions中存储的行为
//双击“百度一下”
Actions action = new Actions(driver);
action.doubleClick(driver.findElement(By.id("su"))).perform();
常用键盘操作全选、回车、删除、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
//eg:删除键使用
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);
针对第二部分描述,只需要在原来加一个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())
1).表单切换。frame/iframe 表单嵌套页面需要通过 switchTo().frame()方法切换,frame()里传递的参数为定位frame的WebElement。
2).窗口切换。需要获取窗口权柄然后切换页面。
Select类处理下拉框
//eg:获取下拉框元素,实例化Select类,然后通过selectByValue选择
WebElement element = driver.findElement(By.id("//select"));
Select sel = new Select(element);
sel.selectByValue("10");
getText(): 返回 alert/confirm/prompt 中的文字信息。
accept(): 接受警告框。
dismiss(): 解散警告框。
sendKeys(keysToSend): 发送文本至警告框。
keysToSend: 将文本发送至警告框。
//eg:接受警告框。
driver.switchTo().alert().accept();
Selenium提供了一种功能,称为TakeScreenShot界面,可用于拍摄可视区域的屏幕截图,该接口提供getScreenshotAs的方法,可捕获屏幕截图并将其存储在所需的位置
//eg:截图
File srcfile = ((TakesScreenshot) driver).getScreenshotAs(OutputType.FILE);
FileInputStream fileInputStream = new FileInputStream(srcfile);
//eg:滚动截图
PageSnapshot pageSnapshot = Shutterbug.shootPage(driver, Capture.FULL);
ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(pageSnapshot.getBytes());
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 信息。
//eg
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);
//获取 cookie
Set<Cookie> cookie = driver.manage().getCookies();
//删除所有 cookie
driver.manage().deleteAllCookies();
WebDriver提供了executeScript()方法来执行JavaScript代码
//eg:
//实例化JavascriptExecutor
JavascriptExecutor driver_js = ((JavascriptExecutor) driver);
//编写js
String js="window.location.href = 'https://www.baidu.com/';";
//执行js代码
driver_js.executeScript(js);
[参考博客](https://blog.csdn.net/qq_22003641/article/details/79137327)