1、文本框/输入框(input类型)
- sandkeys(输入操作)
- clear(清除操作)
- getAttribute(拿输入框中默认属性的值)
.getAttribute("placeholder");//这个是在输入框内无值的时候,取输入框本身属性placeholder的值
.getAttribute("value");//输入框内有值以后,拿到输入框内输入的值
- isEnabled(判断输入框是否是可输入状态,输出是TURE和FALSE)
2、单选框/radio元素操作(type=“radio”)
- click
- clear
- isSelected
选择的几个元素定位信息是一样的
用List定位到选项;
用for循环来判断是否选中,选中就跳过,没选中的点击选择;
for(WebElement sex:SexList){
if sex.isSelected(){
break;
}else{
sex.click();
}
}
3、多选框/CheckBox元素(type=“checkbox”)
click
- clear
- isSelected
- isEnabled(是否可用,是否可点击)
4、按钮/Button元素
引用js代码,将button置为无效:
//创建js对象
Sting JsString = "document.getElementsByClassName(\'sss'\)[0].style.display=\'None\';";
//执行,引用包
JavascriptExecutor js =(JavascriptExecutor)driver;
js.executeScript(JsString);
- click
- isEnabled(按钮是否有效,是否可点击的,是否有添加事件)
- isDisplayed(是否显示)
5、表单(提交类型是submit)
- 找到form表单
- 把表单中数据提交给后台:.submit()
- 不一定能成功,需要看是否为post请求,url也需要一致(可用Fiddler来判别)
下拉框选择(select标签)
方式一:先点击下拉框,出现下拉列表可见后,再进行选择
//定位到form表单
WebElement UserForm = driver.findElement(By.id("pro"));
//点击下拉框元素,出现列表
UserForm.findElement(By.id("job")).click();
//使用标签<option>定位到对应的选项
UserForm.findElements(By.tagName("option")).get(5).click();
方式二:通过select标签方式
- 下拉框定位
Select list = new Select(locator)
-
下拉框操作
a、选择对应元素:
····selectByVisibleText(可见文本)
····selectByValue(Value的值)
····selectByIndex(顺序选择,从0开始)
b、不选择对应元素:
····deselectAll(不选择所有)
····deselectByValue
····deselectByVisibleText
c、获取选择项的值:
····getAllSelectedOptions()(拿到一个list)
····getFirstSelectedOption().getText
····isMultiple(是否是多选)
//前提:引入Selenium的Select包
//定位到form表单
WebElement UserForm = driver.findElement(By.id("pro"));
//点击下拉框元素,出现列表
WebElement job = UserForm.findElement(By.id("job"));
//创建select的实例化对象
Select DownList = new Select(job);
//选择list的选项
DownList.selectByIndex(8);
//拿到列表中所有选项的文本
List<WebElement>SelectOptions = DownList.getAllSelectedOptions();
for(WebElement option:SelectOption){
System.out.println(option.getText());
}
6、上传文件
属性是input类型
a、sendKeys(路径)
//模拟鼠标操作
WebElement HeaPng = driver.findElement(By.className("avator-mode"));
Actions action = new Action(driver);
//把鼠标移动到图片上
action.moveToElement(HeapPng).perform();
//点击图片中出现的元素
driver.findElement(By.className("jj")).click();
//上传文件,sendkeys(在本地的路径)方式
driver.findElement(By.id("upload")).sendKeys("C:\\Users\ss\s.jpg");
弹框属性
a、autoit方式
- 点击打开弹窗
- 使用autoit工具(对分辨率有要求,不能调大调小)
- 使用AutoIt Windows info对元素进行定位
- 使用SciTE Script Editor编写脚本:先聚焦ControlFocus,等待一点时间WinWait,ControlSetText ( “title”, “窗口文本”, controlID, “新文本” ) 新文本写入上传文件的路径;
- 保存脚本,并生成可执行文件;
- 在代码中导入可执行文件
//导入可执行文件,路径
Runtime.getRuntime().exec("D:\\ddd");
b、java的剪切板方式+键盘模拟
//前面假设已经打开弹框,且焦点自动在上传文件输入路径处
//剪切板中保存路径
StringSelection SelectJpg = new StringSelection("C:\\User\\qq");
String sysc Toolkit.getDefaultToolkit().getSystemClipboard();
sysc.setContents(SelectJpg,null);
//模拟键盘事件,按住以后一定要释放
Robot robot = new Robot();
robot.keyPress(KeyEvent.vk_CONTROL);//按住ctrl键
robot.keyPress(KeyEvent.vk_V);//按住V键
robot.keyRelease(KeyEvent.vk_V);//释放V键
robot.keyRelease(KeyEvent.vk_CONTROL);//释放ctrl键
robot.keyPress(KeyEvent.vk_ENTER);//按住ENTER键
robot.keyRelease(KeyEvent.vk_ENTER);//释放ENTER键