博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
基于Selenium2+Java的UI自动化(5) - 执行JavaScript脚本
阅读量:5101 次
发布时间:2019-06-13

本文共 2358 字,大约阅读时间需要 7 分钟。

一、操作日期选择框

说明:日期选择框大部分是不支持前端输入的,因为这个对象是 readOnly,只读属性,selenium提供了JavaScript执行器,对前台源代码进行操作,间接达到输入传值的目的;

(1)方式一:删除对象的readOnly属性,然后对输入框输入操作;

/**	 * 去掉日期选择框的只读属性:readOnly,然后对日期输入框输入值;	 */	public void selectDate01(){ //获取第一个日期选择框元素对象; WebElement startTime = driver.findElement(By.id("txtStartDate")); //获取第二个日期选择框元素对象; WebElement endTime = driver.findElement(By.id("txtEndDate")); //声明一个Js 执行器对象; JavascriptExecutor js = (JavascriptExecutor) driver; /** * 目的:对两个日期输入框输入日期; */ js.executeScript("arguments[0].removeAttribute('readOnly');" + "arguments[1].removeAttribute('readOnly');", startTime,endTime); //arguments[0] 代表第一个元素对象:startTime //arguments[1] 代表第二个元素对象:endTime 、以此类推,元素个数没有限制,下标从0开始; //去掉两个对象的只读属性之后,就可以对输入框进行文本输入了; startTime.sendKeys("2016-11-18"); endTime.sendKeys("2016-12-18"); }

(2)方式二:直接日期输入框赋值value

/**	 * 直接对日期输入框赋值:value	 */	public void selectDate03(){ //获取第一个日期选择框元素对象; WebElement startTime = driver.findElement(By.id("txtStartDate")); //获取第二个日期选择框元素对象; WebElement endTime = driver.findElement(By.id("txtEndDate")); //声明一个Js 执行器对象; JavascriptExecutor js = (JavascriptExecutor) driver; /** * 目的:对两个日期输入框输入日期; */ js.executeScript("arguments[0].value='2016-11-18';" + "arguments[1].value='2016-12-18';", startTime,endTime); }

二、对链接设置本页打开

说明:有的时候,我们点击一个链接,发现竟然打开了一个新窗口,这样就会涉及到多个页面来回切换,要使用到句柄的概念(后边在详细讲解: ),比较麻烦,而且容易出错。

原因:这个链接元素,有一个属性是target,当target值是 "blank" 时,是在新窗口打开,当target 值是 "self" 或者 没有target属性时,是在本窗口加载新页面,不打开新窗口。

所以,这就需要用到js执行器,对target属性进行操作。

(1)方式一:设置链接元素的target属性值为_self

/**	 * 更改target值为_self	 */	public void operatorTarget01(){ //获取链接元素对象; WebElement link = driver.findElement(By.xpath("//a[text()='修改']")); //声明一个Js 执行器对象; JavascriptExecutor js = (JavascriptExecutor) driver; /** * 目的:更改链接元素的 target 属性为 _self; */ js.executeScript("arguments[0].setAttribute('target','_self');",link); //点击链接元素 link.click(); }

(2)方式二:删除链接元素的target属性

/**	 * 删除链接元素的target 属性	 */	public void operatorTarget03(){ //获取链接元素对象; WebElement link = driver.findElement(By.xpath("//a[text()='修改']")); //声明一个Js 执行器对象; JavascriptExecutor js = (JavascriptExecutor) driver; /** * 目的:删除链接元素的 target 属性; */ js.executeScript("arguments[0].removeAttribute('target');",link); //点击链接元素 link.click(); }

转载于:https://www.cnblogs.com/hordehome/p/6264034.html

你可能感兴趣的文章
IdentityServer4【Topic】之定义资源
查看>>
【SQLServer】将Job运行结果发送电子邮件通知用户
查看>>
js 易错点
查看>>
一封程序员的苦逼辞职信
查看>>
10月10日 2
查看>>
(转)正则表达之零宽断言(零宽度正预测先行断言)
查看>>
spring mvc 提供的几个常用的扩展点
查看>>
Spring对字段和集合的注入---依赖注入
查看>>
Java 学习 day09
查看>>
P4345 [SHOI2015]超能粒子炮·改
查看>>
暂且解决INSTALL_FAILED_SHARED_USER_INCOMPATIBLE错误
查看>>
Java获取网络IP
查看>>
远程调试
查看>>
「日常训练」Queue(Codeforces Round 303 Div.2 D)
查看>>
There has been an error processing your request[magento1.6]
查看>>
python带cookie登录
查看>>
想念你 2012-10-24 23:27
查看>>
MVC解决Json DataGrid返回的日期格式是/Date(20130450000365)
查看>>
ojective-C学习笔记(7)Foundation框架
查看>>
CDH5.14.0 安装失败,无法接受agent发出的检测信号
查看>>