PC自动化测试框架之自定义框架介绍(五)--扩展(java)

上面几篇文章讲解了对于PC自动化框架的封装,下面就具体讲解一下怎么用。

先说一下几种定位方式吧

PC自动化测试框架之自定义框架介绍(五)--扩展(java)_第1张图片
扩展
PC自动化测试框架之自定义框架介绍(五)--扩展(java)_第2张图片
有疑问的加V了解详情:zx1187463903

  • By.tagName()

可以通过元素的标签名称来查找元素,像是

、、这些常用的标签。该方法跟之前两个方法的区别是,这个方法搜索到的元素通常不止一个,所以一般建议结合使用findElements方法来使用。比如我们现在要查找页面上有多少个button,就可以用button这个tagName来进行查找

  • By.cssSelector()

1.根据tagName
  driver.findElement(By.cssSelector(“input”)
2.根据ID
  driver.findElement(By.cssSelector(“input#username”));html标签和#id
  driver.findElement(By.cssSelector("#username"));只是#id
3.根据className
  单一class:driver.findElement(By.cssSelector(".username"));.class
  复合class:driver.findElement(By.cssSelector(".username..*"));.classA.classB
4.根据元素属性
  1)精准匹配:
    [A] driver.findElement(By.cssSelector(“input[name=username]”));属性名=属性值,id,class,等都可写成这种形式
[B] driver.findElement(By.cssSelector(“img[alt]”));存在属性。例如img元素存在alt属性
    [C] driver.findElement(By.cssSelector(“input[type=‘submit’][value=‘Login’]”));多属性
  2)模糊匹配:(正则表达式匹配属性)
    [A] driver.findElement(By.cssSelector(Input[id ^=‘ctrl’]));匹配到id头部 如ctrl_12
    [B] driver.findElement(By.cssSelector(Input[id $=‘ctrl’]));匹配到id尾部 如a_ctrl
    [C] driver.findElement(By.cssSelector(Input[id *= ‘ctrl’]));匹配到id中间如1_ctrl_1

实战来了!!!各个方法的使用,以及定位方式的使用(这里以某旅游网站为例)


	public static void main(String[] args) throws Exception {
		/*
		// 1:driver:初始化驱动
		UserFunction.driver("https://XXXXXXXXXX");
		
		// 2:activate:点击元素
		UserFunction.activate(By.className("over"));
		
		// 3:activateByIndex:点击相同属性不同位置的元素
		UserFunction.activateByIndex(By.className("over"), 1);
		UserFunction.activate(By.className("logo"));
		
		// 4:enterTextIn:输入文本信息
		UserFunction.enterTextIn(By.id("pt__search_text"), "1045201");
		
		//  5: enterTextInByText:相同属性不同位置的元素输入信息
		UserFunction.driver("http://passport.ly.com");
		UserFunction.activate(By.id("switchPcLogin"));
		UserFunction.enterTextInByIndex(By.tagName("input"), 4,"123");
		
		// 6:selectFromList:选择下拉框的元素
		UserFunction.selectFromList(By.name("adultNum"), "3");
		
		// 7:getTextFrom:获取元素的文本信息
		String text = UserFunction.getTextFrom(By.className("J_priceS"));
		System.out.println(text);
		
		// 8:getTitle:获取网页的标题
		String title = UserFunction.getTitle();
		System.out.println(title);
		
		// 9:getAttribute:根据元素性质得到另一个属性值
		String value = UserFunction.getAttribute(By.className("logo"), "title");
		System.out.println(value);
		
		// 10:getCurrentUrl:获取当前页的URL值
		String url = UserFunction.getCurrentUrl();
		System.out.println(url);
		
		// 14:key_tab:模拟键盘Tab键操作
		UserFunction.activate(By.className("over"));
		BasicFunction.sleep(3000);// 因为立即预订按钮是已存在的,但是如果资源没有加载出来,点击了立即预订的按钮也无法跳转到订单页
		UserFunction.activate(By.cssSelector("span.choose.J-Next"));// 立即预订
		UserFunction.activate(By.id("Iname"));
		UserFunction.key_tab(5);
		
		// 15:key_button:模拟键盘上下左右键操作
		UserFunction.key_button(5, "down");
		UserFunction.key_button(3, "up");
		
		// 16:switchWindow:切换窗口
		UserFunction.driver("http://www.ly.com");
		UserFunction.activate(By.className("logo"));
		UserFunction.enterTextIn(By.id("pt__search_text"), "1045201");
		UserFunction.switchWindow(1);
		UserFunction.enterTextIn(By.id("pt__search_text"), "1045201");
		
		// 17:isElementExist:判断当前页面是
		if (UserFunction.isElementExist(By.className("order-btn"))){
			System.out.println("立即预订按钮已加载完成");
		}else{
			System.out.println("元素不存在");
		}
		
		// 18:clear:清除输入框内容
		UserFunction.activate(By.className("logo"));
		UserFunction.switchWindow(1);
		UserFunction.enterTextIn(By.id("pt__search_text"), "1045201");
		UserFunction.clear(By.id("pt__search_text"));
		
		// 19:close:关闭当前窗口
		UserFunction.activate(By.className("logo"));
		UserFunction.close();
		
		// 20:quit:关闭浏览器
		UserFunction.activate(By.className("logo"));
		UserFunction.quit();
		
		// 21:refresh:刷新页面
		UserFunction.refresh();
		
		// 22:screenShot:截图
		UserFunction.screenShot(); //判断文件夹是否存在的操作
		
		// 23:screenShotSpecial:异常截图
		UserFunction.screenShotSpecial();

		// 以登录页为例,几种定位方式
		UserFunction.driver("http://passport.ly.com");
		//By.id() 通过id属性查找
		dr.findElement(By.id("switchPcLogin")).click();
		// By.name() 通过name属性查找
		dr.findElement(By.id("switchPcLogin")).click();
		dr.findElement(By.name("name")).sendKeys("18550502316");
		// By.className() 通过class属性查找
		dr.findElement(By.className("switch_corner_pc")).click();
		// By.linkText() 通过linkText(链接文本精确查找)
		dr.findElement(By.linkText("快速注册")).click();
		// By.partiallinktext()  链接文本模糊查找 
		dr.findElement(By.partialLinkText("登录页面")).click();
		// By.xpath() 通过xpath路径
		dr.findElement(By.xpath("//*[@id='switchPcLogin']")).click();
		//UserFunction.activate(By.xpath("//*[@id='switchPcLogin']"));  //copy的时候注意单双引号的问题。
		// By.cssSelector()	选择器的几种定位方式
		// By.tagName() 通过标签来查找
		List list=dr.findElements(By.cssSelector("input"));
		System.out.println(list.size());
		// 2:根据ID
		dr.findElement(By.cssSelector("#switchPcLogin")).click();
		// 3:根据className
		dr.findElement(By.cssSelector(".switch_corner")).click();
		dr.findElement(By.cssSelector("")).click(); //复合  立即预定按钮
		*/
	}

有疑问的加V了解详情:zx1187463903

如果你也搞定了,开心的同时请小编喝个咖啡也极好的呀。
PC自动化测试框架之自定义框架介绍(五)--扩展(java)_第3张图片

你可能感兴趣的:(PC自动化测试框架之自定义框架介绍(五)--扩展(java))