天天看点

selenium+java学习记录四(常见元素处理)3、多选框/CheckBox元素(type=“checkbox”)

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键
           

继续阅读