【selenium】常用的方法及代码片段

本文详细介绍了Selenium WebDriver的一些关键操作,包括启动浏览器、打开页面、点击元素、验证文本、处理表格、执行JavaScript、截图、处理iframe和确认框等,为自动化测试提供了实用的代码片段。

一、设置启动浏览器

@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");








































































评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值