一、下拉框选择
下拉框选择分非Select元素和Select。有些下拉框没有Select需要单独进行处理。
1、非Select元素
处理非Select元素的下拉框时直接选择需要定位的元素直接进行定位,然后触发点击即可
2、Select下拉框
如果页面元素是一个Select元素的下拉框,我们需要将元素封装为Select对象。
Select select = new Select(WebElement element);
Select对象常用的API:
select.getOptions(); //获取所有选项
select.selectByIndex(index); //根据索引选择对应的元素
select.selectByValue(value); //选择指定属性value值对应的选项
select.selectByVisibleText(text);//选中文本值对应的选项
select。isMultiple(); //是否多选
二、切换Iframe
如果一个页面中嵌套多个iframe页面,想要定位iframe元素,如果iframe的焦点还停留在原页面,我们在iframe新页面定位元素时,会无法定位到元素,需要我们将driver的焦点切换到iframe页面中。
iframe切换方式:
根据iframe的索引
driver.switchTo().frame(index);
2. 根据iframe的id
driver.switchTo().frame(nameOrId);
3. 根据iframe WebElement
driver.switchTo().frame(WebElement)
4. 跳转到父级iframe中
driver.switchTo().parentFrame()
5. 回到默认内容页面(否则会找不到元素)
driver.switchTo().defaultContent(WebElement)
三、切换window窗口
当点击标签元素时,会触发打开链接页面的事件,有两种情况:第一种为当前窗口加载新的页面内容;第二种为新建一个窗口加载新的页面内容,这种情况在a 标签有target="_blank" 时触发。第二种情况时需要切换窗口。
1、切换方式:创建window对象
driver.switchTo.window(nameOrHandle);
2、获取窗口句柄
driver.getWindowHandle();//获取当前操作窗口的句柄
driver.getWindowHandles();//获取测试时打开的所有窗口句柄
四、切换Alert弹框
1、获取alert弹框
Alert alert = driver.switchTo.alert();
2、常用API:
alert.getText(); //获取警告框中的提示信息
alert.accept(); //点击确认按钮
alert.dismiss(); //点击取消取消
五、鼠标操作
自动化测试时,对于不适合直接点击或者进行某些特殊操作的元素,可以使用Selenium的Actions类来模拟鼠标键盘操作。
1、创建方式:创建Actions对象
Actions actions = new Actions(driver);
2、 常用API:
clickAndHold() //单击鼠标左键不释放
release() //释放鼠标左键
doubleClick() //双击鼠标左键
moveToElement() //移动鼠标到指定元素
contextClick() //右键单击
dragAndDrop() //拖拽元素
perform() //执行具体的操作,前面6个方法只有调用perform()后才会真正执行操作
六、时间控件
1、非限制输入:指不限制手动输入,直接调用sendKeys方法写入时间数据
直接进行元素定位,然后输入指定日期
2、不能输入,则可以直接选择或使用JavaScript代码改变元素的value属性值
(1)、直接选择,通过元素定位进行逐步定位然后进行选择
(2)、利用JS删除readonly属性
JavascriptExecutor jsExecutor = (JavascriptExecutor)driver; jsExecutor.executeScript("document.getElementById('train_date').removeAttribute('readonly')");
七、JS操作
声明:JavascriptExecutor jsExecutor = (JavascriptExecutor)driver;
去除removeAttribute属性:
jsExecutor.executeScript("arguments[0].removeAttribute('readonly')",train_date);
arguments[0]为占位符
八、使用js定位页面滑动
使用element.scrollIntoView( ) 滚动到指定元素的位置
九、文件上传
1、使用sendKeys,使用前提为上传元素为input标签和type类型为file的文件
2、无法直接输入文件地址,需要使用第三方工具进行操作
(1)、首先安装AutoIT
(2)、打开 AutoIT Window Info 工具,选择窗口中要识别的元素(文件名后面的输入框以及打开按钮),识别元素后在Windows中可以查看Title。Control中可以看到ClassnameNN。
(3)、打开 SciTE Script Editor,开始进行脚本编写。
脚本内容如下:
;等待“打开”窗口
WinWaitActive("打开")
;休眠2秒
Sleep(2000)
;在输入框中写入上传文件的路径
ControlSetText("打开", "", "Edit1", "d:\java_auto\test.png")
;休眠2秒
Sleep(2000)
;点击打开按钮 ControlClick("打开", "","Button1");
ControlSetText ( "title", "text", controlID, "new text" [, flag = 0] )
ControlSetText(“标题”,“文本”,controlID,“新文本” [,标志= 0])
(4)、脚本编写完成后可以点击Tools-Go运行一下脚本,运行脚本时需要打开上传文件的Windows窗口
(5)、选择 Complie Script to .exe 工具把脚本编译为 exe 文件
(6)、保存后的exe文件也可以直接双击运行,先打开上传文件的Windows窗口然后双击exe文件。
(7)、Java代码本地执行exe文件