基于Selenium2+Java的UI自动化(5) - 执行JavaScript脚本

一、操作日期选择框

说明:日期选择框大部分是不支持前端输入的,因为这个对象是 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); }

二、对链接设置本页打开

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

原因:这个链接元素,有一个属性是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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
课程介绍你是否在寻找机会进入自动化测试领域? 你是否渴望学习selenium webdriver + Java以及最新的框架和技术进行web自动化测试? 你是否感兴趣学习Selenium如何用在你现有的项目里的? 这门课带你从Selenium搭建环境开始讲起,然后学习selenium,TestNG, logback, maven, jenkins。 我们假设学员没有任何自动化经验,来设计的这套课程。每个课题都从最基础的开始讲起。Selenium相关的该覆盖的课题都覆盖了。 例子都是来自于真实的web应用项目,帮助你理解不同的组件怎么用上自动化,这将展示给你一个行业层面的框架,增加自信心。 全网没有其他课程像这门课涵盖到如此之深的细节。 您将会学到什么 学完课程以后,你将拥有完整的Selenium Webdriver知识 你将具备从头开始设计Page Object、Page Factory、DATADRIVEN等搭建自动化框架的能力 用100多个实例对Selenium现实场景应用进行深入理解 全面了解TestNG, Maven, Jenkins, HTML报告,多浏览器并行测试 了解数据库测试和使用Selenium进行性能测试 你将彻底了解testNG框架 你从网上随便选择一个网站,都可以实现自动化,用所有可能的测试用例进行自动化测试 将提高你的编码技能,以编写最优化的自动化测试用例代码 你基本可以搞定任何Selenium面试,并能从设计阶段开始领导整个Selenium自动化项目 你应该能够使用应用程序的GUI来验证数据完整性 你将能够创建漂亮的报告来打动客户或领导 更深入地理解自动化指南和代码质量标准 会附带一个练习网站,可以用上所有可用的WebDriver功能,实现自动化 【适合人群】 软件手动测试人员想转为自动化测试的人员 自动化软件测试人员想加强专业技能的 刚毕业学生想从事软件行业 QA 组长或项目经理 【课程优势】 学完课程以后,你将拥有完整的Selenium Webdriver知识 【讲师介绍】 资质介绍: 12年以上软件测试工作经验,其中7年以上自动化测试开发经验 新书“Python3+Selenium3自动化测试项目实战”作者

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值