一、设置启动浏览器
@Before
public void setUp() throws Exception {
System.setProperty("webdriver.firefox.bin", "D:/Program/Mozilla Firefox/firefox.exe");
driver = new FirefoxDriver();
driver.manage().window().maximize(); //将浏览器窗口最大化
}二、open
Open(url):打开一个页面链接三、click
//点击一个按钮
driver.findElement(By.id("submit_login")).click();四、assertText
验证页面文本元素(验证失败时测试会终止)
五、verifyText
验证页面的文本元素(验证失败时继续运行下面的程序)
// 双击copytest按钮
WebElement copytest= driver.findElement(By.id("copytest"));
Actions builder = new Actions(driver);
builder.doubleClick(copytest).build().perform();七、获得文本框的value值(属性值)
driver.findElement(By.id("field2")).getAttribute("value")八、向文本框中输入值
driver.findElement(By.id("account_login")).sendKeys("selenium"); 九、driver打开连接地址
driver.get("https://www.eelly.test/index.php?app=member&act=login"); 十、等待页面加载
Thread.sleep(5000); 十一、获得表格中的行
List<WebElement> rows = driver.findElements(By.tagName("tr")); 十二、获得表格中的行下面的列
for (WebElement row : rows){
List<WebElement> cols = row.findElements(By.tagName("td")); for (WebElement col : cols){
System.out.println(col.getText()); //获得td的文本
}
System.out.println();
}十三、执行拖拽操作
// 原元素和目标元素
WebElement source = driver.findElement(By.id("draggable"));
WebElement target = driver.findElement(By.id("droppable"));
Actions builder = new Actions(driver);
builder.dragAndDrop(source, target).perform();十四、执行Javascript代码
JavascriptExecutor js = (JavascriptExecutor) driver;
String title = (String)js.executeScript("return document.title");//获得网页的标题
assertEquals("用户登录-衣联网", title);
long links = (long)js.executeScript("var links = "
+ "document.getElementsByTagName('A');" // 获得链接集合
+ " return links.length"); // 返回链接数目十五、屏幕截图
public void ScreenShot(WebDriver driver,String SName){
File file =( (TakesScreenshot)driver).getScreenshotAs(OutputType.FILE);// 捕捉屏幕并以文件的方式返回
try {
FileUtils.copyFile(file,new File("D:/workspace/eellytest/"+SName+".png"));// 保存图片
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}十六、对远程系统屏幕截图
DesiredCapabilities capabilities = DesiredCapabilities.firefox();// 使用指定浏览器
try{
driver = new RemoteWebDriver(new URL("http://localhost:4444/wd/hub"),capabilities);
}catch(Exception e){
e.printStackTrace();
}
driver.get("https://www.eelly.test/index.php?app=member&act=login"); // 打开连接地址
driver = new Augmenter().augment(driver);// 对系统进行截图
try{
// 捕捉屏幕并以文件的方式返回
File file = ((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE);
FileUtils.copyFile(file,new File("D:/workspace/eellytest/用户登录-衣联网.png"));//保存图片
}catch(Exception e){
e.printStackTrace();
}十七、将浏览器最大化
driver.manage().window().maximize();// 将浏览器最大化十八、自动选择下拉列表
By anyDealLocator = By.id("search_month");
@FindBy(id = "search_month") WebElement anyDealProxyed;
PageFactory.initElements(driver, this);// 初始化
Select select = new Select(anyDealProxyed);//获取下拉框的数据
assertFalse(select.isMultiple());//验证下拉框不支持多选
assertEquals(4, select.getOptions().size());//验证下拉框中值的数量
select.selectByVisibleText("最近三个月");//用可见的文本来选择选项
//截图
File file =( (TakesScreenshot)driver).getScreenshotAs(OutputType.FILE);
FileUtils.copyFile(file,new File("D:/workspace/eellytest/我的资金-三个月.png"));
Thread.sleep(5000);
select.selectByIndex(3);//用索引值来选择选项
File file3 =( (TakesScreenshot)driver).getScreenshotAs(OutputType.FILE);
FileUtils.copyFile(file3,new File("D:/workspace/eellytest/我的资金-全部.png"));
Thread.sleep(5000);
select.selectByValue("6");//用value值来选择选项
File file2 =( (TakesScreenshot)driver).getScreenshotAs(OutputType.FILE);
FileUtils.copyFile(file2,new File("D:/workspace/eellytest/我的资金-六个月.png"));十九、自动选择单选按钮
//使用value定位按钮
WebElement radio = driver.findElement(By.cssSelector("input[value='wxQrCode']"));
if (!radio.isSelected()){// 如果按钮没有被选中
radio.click();//单击选中
}
login.ScreenShot(driver, "支付页-微信支付");// 截图
assertTrue(radio.isSelected());//按钮被选中
List<WebElement> sMonths = driver.findElements(By.name("ebank_type"));//获得所有的单选
for (WebElement sMonth : sMonths){
if (sMonth.getAttribute("value").equals("alipayQrCode")){//判断支付宝扫码是否存在
if (!sMonth.isSelected()){//存在且没有被选中
sMonth.click();
assertTrue(sMonth.isSelected());
break;
}
}
}二十、窗口句柄 切换到新的窗口
/**
* 窗口切换 获取窗口句柄
* @param driver
* @param index
*/
public void switchWindow(WebDriver driver,int index){
Set<String> set = driver.getWindowHandles(); //得到打开的句柄
List<String> list = new ArrayList<String>(set); //set要转换成为list,因为set操作复杂
String handle = list.get(index);
driver.switchTo().window(handle); //切换到新的窗口中
}
调用时:this.switchWindow(1); //1表示新打开的窗口二十一、打开一个新的窗口(多窗口操作)
/**
* 打开一个新窗口(多窗口的操作)
* @param driver
*/
public void multWindow(WebDriver driver){
driver.findElement(By.xpath("//div[@id='open']/a")).click();
this.switchWindow(driver,1); //1表示新打开的窗口
driver.close(); //把新打开的窗口关掉
this.switchWindow(driver,0); //0表示切换回原来的窗口
}二十二、selenium webdriver Java 浏览器中的前进、后退、刷新操作
driver.navigate().forward(); // 前进
driver.navigate().back(); // 后退
driver.navigate().refresh(); // 刷新二十三、checkbox复选框
/**
* checkbox复选框
* @param index
*/
public void checkbox(int index){
List<WebElement> list = driver.findElements(By.xpath("//div[@id='checkbox']/input"));
WebElement element = list.get(index);
element.click();
//list.get(3).click(); 选择第4个复选框
//System.out.println("check box checked"+element.isSelected()); //判断checkbox是否被选中
}二十四、显示等待的值
| 等待的条件 | WebDriver方法 |
| 页面元素是否在页面上可用和可被单击 | elementToBeClickable(By locator) |
| 页面元素处于被选中状态 | elementToBeSelected(WebElement element) |
| 页面元素在页面中存在 | presenceOfElementLocated(By locator) |
| 在页面元素中是否包含特定的文本 | textToBePresentInElement(By locator) |
| 页面元素值 | textToBePresentInElementValue(By locator, java.lang.String text) |
| 标题 (title) | titleContains(java.lang.String title) |
WebDriverWait wait = new WebDriverWait(driver, 10);
wait.until(ExpectedConditions.textToBePresentInElementLocated(By.id("J_cartSettlement"), "结算"));二十五、处理iframe
WebElement iframe = driver.findElement(By.id("frame_login_register"));// 得到iframe
driver.switchTo().frame(iframe); // 切换到iframe二十六、处理确认弹出框
private Alert getConfirmBox(){
//点击按钮弹出确认提示框
WebElement button = driver.findElement(By.id("confirm"));
button.click();
//获取确认提示框
Alert confirmBox = driver.switchTo().alert();
assertEquals("我是确认提示框!",confirmBox.getText());
return confirmBox;
}
//点击确定按钮
getConfirmBox().accept();
//点击取消按钮
getConfirmBox().dismiss();二十七、下拉到页面底部
JavascriptExecutor js = (JavascriptExecutor) driver;
js.executeScript("var q=document.documentElement.scrollTop=10000");
本文详细介绍了Selenium WebDriver的一些关键操作,包括启动浏览器、打开页面、点击元素、验证文本、处理表格、执行JavaScript、截图、处理iframe和确认框等,为自动化测试提供了实用的代码片段。

1043

被折叠的 条评论
为什么被折叠?



