web UI自动化测试(二)

元素定位

万能定位方法:xpath 或者 css selector选择器。此处不再赘述,网上自行百度。

实践
  1. 封装常用操作界面元素的方法
    在这里插入图片描述

  2. web自动化中三种等待方法:
    ①显示等待
    用webdriverwait对象,设置一个最长的等待时间
    调用webdriverwait对象中的until方法。
    until方法制成两种写法:
    a、expectedconditions类,直接调用selenium当中已经封装好的各种预期事件方法
    b、new expectedcondition接口
    显示等待的好处,可以自由灵活的进行等待事件的指定。

    ②最常用的:隐式等待
    等待的方式和显示等待方式类似,但是等待的事件是固定在元素定位时,等待这个元素能够被定位。一次设置,在脚本范围之内,driver对象中生效。
    调用方法:driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);可以直接在完成driver实例化之后调用,切换句柄之后最后再设置一次。

    ③强制等待(Java线程等待)
    thread.sleep方法,强制线程挂起指定毫秒数。在这里插入图片描述

  3. 常见错误:ElementNotVisibleException:element not interactable (元素不可互动)
    可能原因:

  • 1)元素需要悬停到其他元素或者其他前置操作才在页面上出现
    解决方案:
    使用selenium提供的actions类,调用其中的方法:act.moveToElement(driver.findElement(By.xpath(XPath))).perform()【注意:记得最后加上perform表示这个动作要执行】
/**
    *    悬停方法
  * @param XPath
  */
 public void hover(String XPath) {
 	Actions act = new Actions(driver);
 	act.moveToElement(driver.findElement(By.xpath(XPath))).perform();
 }
  • 2)当前操作元素不响应对应的事件,比如input元素统计的span等等纯文本元素,不响应点击。
  1. 出现新窗口时,需要进行窗口切换,才能继续操作,selenium用于区分窗口的标志是窗口的句柄,类似于窗口的编号。
    切换窗口就是通过句柄的切换来完成的,思路:
  • 1)通过页面标题或者内容(driver.getPagesource)来确定句柄
  • 2)通过句柄的先后顺序关闭就窗口切换新窗口
  1. 遇到iframe(内联框架,将其他的页面嵌入到当前页面中,相当于HTML中嵌套HTML;而xpath是从最外层的HTML按照xpath指定的路径查找,不会进入到iframe里面),需要切换到iframe之后在进行定位操作。
    driver.switchto.frame()方法可以接受三种参数:
  • 1)int型的序号(不建议使用)
  • 2)String iframe的name或者id属性
  • 3)webelement iframe元素对象
    切出iframe代码driver.switchTo().defaultContent();
/**
	 * 切换到iframe子页面【ByXPath】
	 * @param xpath
	 */
	public void intoIframe(String xpath) {
		try {
			//定位到iframe元素,然后传递webelement给switchto.frame方法
			WebElement frame = driver.findElement(By.xpath(xpath));
			driver.switchTo().frame(frame);
		} catch (Exception e) {
			// TODO: handle exception
			System.out.println("切入iframe失败");
		}
	}
	
	/**
	 * 切入iframe子页面【ByName】
	 * @param name
	 */
	public void intoIframeByName(String name) {
		try {
			driver.switchTo().frame(name);
		} catch (Exception e) {
			// TODO: handle exception
			System.out.println("切入iframe失败");
		}
	}
  1. 一屏展示不全的需要滚动页面,此时需要用的DOM的window.scrollTo(0,900) 。通过把driver强转为js执行器类型来执行js脚本,代码如下:
public void runJs(String text) {
   	//强转driver为js执行器类型
   	JavascriptExecutor js = (JavascriptExecutor)driver;
   	try {
   		js.executeScript(text);
   	} catch (Exception e) {
   		// TODO: handle exception
   		System.out.println("js脚本执行失败");
   	}
   }

最后附上元素定位常见错误:
在这里插入图片描述

上述内容源码下载地址:https://download.csdn.net/download/u014615615/11485074

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值