基本操作
等待几秒
Thread.sleep(500); //单位是毫秒
这里建议另写一个 wait方法,调用起来简单些,不然在主程序会有过多的trycatch语句而显得杂乱
public static void wait(int num){
try {
Thread.sleep(num);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
正经的超时设置
WebDriver driver = new FirefoxDriver();
driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS); //识别元素时的超时时间
driver.manage().timeouts().pageLoadTimeout(10, TimeUnit.SECONDS); //页面加载时的超时时间
driver.manage().timeouts().setScriptTimeout(10, TimeUnit.SECONDS); //异步脚本的超时时间
模拟键盘操作,使用enter键
sendKeys(Keys.ENTER) driver.findElement(By.xpath("//*[@id='kw']")).sendKeys(Keys.ENTER);
获取cookie //获得cookie
Set<Cookie> coo = driver.manage().getCookies();
System.out.println(coo); //打印cookie
删除cookie
//删除所有cookie
driver.manage().deleteAllCookies();
鼠标操作
鼠标点击
Actions action = new Actions(driver); action.click(); //鼠标左键点击当前停留的位置
action.click(driver.findElement(By.id(“kw”))); //鼠标左键点击指定的元素对象
鼠标右键点击 Actions action = new Actions(driver); action.contextClick(); //鼠标右键点击当前停留的位置
action.contextClick(driver.findElement(By.id(“kw”))); //鼠标右键点击指定的元素对象
鼠标双击
Actions action = new Actions(driver); action.doubleClick(); //鼠标双击当前停留的位置
action.doubleClick(driver.findElement(By.id(“kw”))); //鼠标双击指定的元素对象
鼠标拖拽
Actions action = new Actions(driver); action.dragAndDrop(el1,el2); //鼠标将el1元素拖放到el2元素的位置
action.dragAndDrop(el1,x,y); //鼠标el1元素拖放到(x, y)位置,x为横坐标,y为纵坐标
鼠标悬停
Actions action = new Actions(driver); action.clickAndHold(el); //鼠标悬停在el元素的位置
鼠标移动
Actions action = new Actions(driver); action.moveToElement(el); //将鼠标移到el元素 action.moveToElement(el,x,y); //将鼠标移到元素el的 (x, y) 位置
鼠标释放
action.release(); //释放鼠标
打开新页面
driver.get("http://beta.zhixiaoup.com"); //打开新页面
JavascriptExecutor js = (JavascriptExecutor) driver;
String url="window.open(\"http://www.baidu.com\")";
js.executeScript(url);
浏览器操作
浏览器最大化
driver.manage().window().maximize();
浏览器缩放
String url="document.getElementsByTagName('body')[0].style.zoom=0.8;";
((JavascriptExecutor) driver).executeScript(url);
浏览器当前页面关闭
driver.close();
浏览器关闭
driver.quit():
页面操作
打开网页:
driver.get("https://www.baidu.com");
在输入框中输入内容:text.sendKeys(“”);
清空输入框中的内容:text.clear();
获取输入框中的内容:text.getText();
选择下拉框中的元素:
Select select = new Select(wd.findElement(By.id("select")));
切换到某个frame:
driver.switchTo().frame("");
从一个frame切换到另一个frame:
driver.switchTo().frame("");
切换到某个window:
driver.switchTo().window("windowName");
返回父iframe:(一般在跳转frame之前都写上这个语句)
driver.switchTo().defaultContent();
刷新页面:
driver.navigate().refresh();
页面前进后退:
driver.navigate().forward();
driver.navigate().back();
输入框
element.sendKeys(“test”);//在输入框中输入内容:
element.clear(); //将输入框清空
element.getText(); //获取输入框的文本内容:
下拉选择框
Select select = new Select(driver.findElement(By.id("select")));
select.selectByVisibleText(“A”);
select.selectByValue(“1”);
select.deselectAll();
select.deselectByValue(“1”);
select.deselectByVisibleText(“A”);
select.getAllSelectedOptions();
select.getFirstSelectedOption();
单选框
WebElement radio=driver.findElement(By.id("BookMode"));
radio.click(); //选择某个单选项
radio.clear(); //清空某个单选项
radio.isSelected(); //判断某个单选项是否已经被选择
多选框
WebElement checkbox = driver.findElement(By.id("myCheckbox."));
checkbox.click();
checkbox.clear();
checkbox.isSelected();
checkbox.isEnabled();
弹出对话框
Alert alert = driver.switchTo().alert();
alert.accept(); //确定
alert.dismiss(); //取消
alert.getText(); //获取文本
表单
WebElement approve = driver.findElement(By.id("approve"));
approve.click();
approve.submit();//只适合于表单的提交
判断搜索结果是否正确
例子:
显示列表
相关HTML
获取职位名称元素
List<WebElement> elements = driver.findElements(By.cssSelector("div[class='card_title_and_tips'] > div"));
具体代码如下
/*
* 机会搜索匹配
*/
@Test
public void search() throws InterruptedException {
f();
Thread.sleep(1000);
//在搜索框中输入“新东方大厨”
String value= "新东方大厨";
driver.findElement(By.cssSelector("input[placeholder='搜索职位/公司']")).sendKeys(value);
//点击搜索
driver.findElement(By.cssSelector("div[class='el-input-group__append']")).click();
Thread.sleep(1000);
//查看搜索结果
List<WebElement> elements = driver.findElements(By.cssSelector("div[class='card_title_and_tips'] > div"));
for(WebElement e:elements) {
System.err.println(e.getText());
String name = e.getText();
//查询名称为空字串时跳出循环
if(name.equals("")) {
break;
}
//判断职位中是都包含搜索关键字,若不包含报错
if(!e.getText().contains(value)&&!name.equals("")) {
Assert.fail("搜索结果错误");
}
}
}