zoukankan      html  css  js  c++  java
  • 基于Selenium2+Java的UI自动化(5)

    一、操作日期选择框

    说明:日期选择框大部分是不支持前端输入的,因为这个对象是 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();
    	}
  • 相关阅读:
    Asp.Net Web API 2第八课——Web API 2中的属性路由
    Asp.Net Web API 2第七课——Web API异常处理
    Asp.Net Web API 2第六课——Web API路由和动作选择
    Asp.Net Web API 2第五课——Web API路由
    开始学习python
    BMI 小程序 购物车
    深浅copy 文件操作
    字典 dict 集合set
    基本数据类型 (str,int,bool,tuple,)
    python 运算符
  • 原文地址:https://www.cnblogs.com/hordehome/p/6264034.html
Copyright © 2011-2022 走看看