selenium 页面经常改变元素_selenium页面元素操作及常用方法总结

测试页面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());

}

}

你可能感兴趣的:(selenium,页面经常改变元素)