测试页面demo
页面代码
内容 | 页面元素 |
文本框 | |
单选框 | MaleFemale |
复选框 | bike car Apple |
alert | |
prompt | |
confirm | |
文件上传 | |
下拉选择select | 苹果 华为 Dell |
select Links | 百度 知乎 |
超链接 | my blog 小新人~ |
View Code
一、selenium的8大定位方式
selenium的核心是定位WebElement
//1、通过ID定位
By.id("");
//2、通过name定位
By.name("");
//3、通过xpath定位
By.xpath("");
//4、通过className定位
By.className("");
//5、通过cssSelector定位
By.cssSelector("");
//6、通过链接文本定位
By.linkText("");
//7、通过链接文本模糊定位
By.partialLinkText("");
//8、通过tagName定位
By.tagName("");
文本输入框通过定位得到webElement对象,操作输入框常用方法:
element.clear(); //清除文本框中原有内容
element.sendKeys("测试文本框输入"); //输入文本
单选框radioradio页面元素的属性
同样,要操作元素,需要先通过定位得到webElement对象,操作radio常用方法:
element.isSelected(); //判断该值是否被选中
element.isEnabled(); //判断该值是否可选,是否有效,当radio对象设置了属性disabled,则webElement对象不可选,isEnabled()返回false,否则true。
element.getAttribute("name"); //获取对象属性是name的值,Male,得到值是sex
element.getAttribute("value"); //获取对象属性是value的值,Male,得到的值是male
复选框checkBox类似于radio
//checkBox
List checkElements = driver.findElements(By.xpath("//input[@type='checkbox']"));for(WebElement element:checkElements){
System.out.println("CheckBox对象是否被选中:" +element.isSelected());
System.out.println("checkBox对象是否可选择:" +element.isEnabled());
System.out.println("CheckBox对象的值:" + element.getAttribute("value"));
element.click();
Thread.sleep(2000);
System.out.println("CheckBox对象是否被选中:" +element.isSelected());
}
alert、prompt,confirm对话框先要获取alert元素对象WebElement,webElement.click()调出alert对话框
Alert alert = driver.switchTo().alert(); //获取alert对象
alert.accept(); //确认,关闭对话框
alert.getText();获取alert的内容
alert.dismiss(); //取消
alert.sendKeys("输入的内容"); //prompt对话框可以输入内容
文件上传通常是input框,可以使用sendKeys("上传文件的地址");select下拉选择
WebElement selectElement = driver.findElement(By.id("selector"));
Select select= newSelect(selectElement);
select.selectByIndex(0); //通过索引选择
Thread.sleep(1000);
select.selectByValue("华为"); //通过value值选择
Thread.sleep(1000);
select.selectByVisibleText("Dell"); //通过展示的文本选择
选择option的三种方法
selectByIndex(int index) 通过index
selectByVisibleText(String text) 通过匹配到的可见字符
selectByValue(String value) 通过匹配到标签里的value
超链接
my blog 小新人~
链接的操作方式有很多种,我这里是执行了js
WebElement linkElement = driver.findElement(By.linkText("my blog 小新人~"));
JavascriptExecutor javascriptExecutor=(JavascriptExecutor) driver;
String js= "window.open('"+linkElement.getAttribute("href")+"')";
javascriptExecutor.executeScript(js);
String currentWindow = driver.getWindowHandle(); //当前窗口
driver.switchTo().window(s); //跳转到指定窗口
测试代码
packagecom.uiAutoTest;import org.openqa.selenium.*;importorg.openqa.selenium.chrome.ChromeDriver;importorg.openqa.selenium.support.ui.Select;importorg.testng.Assert;importorg.testng.annotations.Test;importjava.util.List;importjava.util.Set;/***@authorJessie
* @date 2020/9/25 20:26*/
public classstudy {
WebDriver driver;
@Testpublic void test() throwsInterruptedException {
System.setProperty("webdriver.chrome.driver", "D:\\driver\\chromedriver.exe");
driver= newChromeDriver();
driver.get("D:\\document\\demo.html");//input输入框
WebElement element = driver.findElement(By.name("name"));
element.clear();
element.sendKeys("测试文本框输入");//radio单选框
WebElement radioElement1 = driver.findElement(By.xpath("/html/body/table/tbody/tr[3]/td[2]/input[1]"));
WebElement radioElement2= driver.findElement(By.xpath("/html/body/table/tbody/tr[3]/td[2]/input[2]"));
Assert.assertTrue(radioElement1.isSelected());
Assert.assertTrue(radioElement1.isEnabled());
Assert.assertFalse(radioElement2.isSelected());
Assert.assertFalse(radioElement2.isEnabled());
radioElement2.click();
System.out.println("radioElement1的name属性值" + radioElement1.getAttribute("name"));//checkBox多选框
List checkElements = driver.findElements(By.xpath("//input[@type='checkbox']"));for(WebElement one:checkElements){
System.out.println("CheckBox对象是否被选中:" +one.isSelected());
System.out.println("checkBox对象是否可选择:" +one.isEnabled());
System.out.println("CheckBox对象的值:" + one.getAttribute("value"));
one.click();
Thread.sleep(1000);
System.out.println("CheckBox对象是否被选中:" +one.isSelected());
}//alert对话框
WebElement alertElement = driver.findElement(By.xpath("/html/body/table/tbody/tr[5]/td[2]/input"));
alertElement.click();
Thread.sleep(1000);
Alert alert=driver.switchTo().alert();
Assert.assertTrue(alert.getText().contains("alert"));
alert.accept();
Thread.sleep(2000);//prompt对话框
WebElement promptElement = driver.findElement(By.xpath("/html/body/table/tbody/tr[6]/td[2]/input"));
promptElement.click();
Thread.sleep(2000);
Alert prompt=driver.switchTo().alert();
Assert.assertTrue(prompt.getText().contains("prompt"));
prompt.sendKeys("测试prompt对话框");
Thread.sleep(2000);
prompt.accept();//confirm对话框
WebElement confirmElement = driver.findElement(By.xpath("/html/body/table/tbody/tr[7]/td[2]/input"));
confirmElement.click();
Thread.sleep(1000);
Alert confirm=driver.switchTo().alert();
Assert.assertTrue(confirm.getText().contains("confirm"));
confirm.dismiss();
Thread.sleep(2000);//文件上传
WebElement fileElement = driver.findElement(By.xpath("//td/input[@type='file']"));
fileElement.sendKeys("D:\\document\\demo.html");
Assert.assertTrue(fileElement.getAttribute("value").contains("demo.html"));//select下拉选择
WebElement selectElement = driver.findElement(By.id("selector"));
Select select= newSelect(selectElement);
select.selectByIndex(0); //通过索引选择
Thread.sleep(1000);
select.selectByValue("华为"); //通过value值选择
Thread.sleep(1000);
select.selectByVisibleText("Dell"); //通过展示的文本选择
List list =select.getAllSelectedOptions();for(WebElement e:list){
System.out.println(e.getAttribute("value"));
}//超链接
String currentWindow = driver.getWindowHandle(); //当前窗口
System.out.println(currentWindow);
WebElement linkElement= driver.findElement(By.linkText("my blog 小新人~"));
JavascriptExecutor javascriptExecutor=(JavascriptExecutor) driver;
String href= linkElement.getAttribute("href");
String js= "window.open('"+linkElement.getAttribute("href")+"')";
javascriptExecutor.executeScript(js);
Set windowHandles = driver.getWindowHandles(); //获取所有窗口
for(String s :windowHandles){
WebDriver window=driver.switchTo().window(s);if(window.getCurrentUrl().equals(href)){
System.out.println(driver.getCurrentUrl());break;
}
}
driver.switchTo().window(currentWindow);
System.out.println(driver.getCurrentUrl());
}
}