Selenium02-通过页面元素的属性获取相应的页面元素


在正式编写测试用例前,应该了解一下 Selenium的基本语法,下面通过实际的案例介绍

内容:

1.搭建tomcat服务器,存放准备测试内容,测试页面

Selenium02-通过页面元素的属性获取相应的页面元素_第1张图片


2. 执行testng测试

第一部分:基本语法部分介绍

package com.testng;

import java.util.List;

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.testng.Assert;
import org.testng.annotations.AfterTest;
import org.testng.annotations.BeforeTest;
import org.testng.annotations.Test;

/**
 * 

* Selenium的Java编程基本语法:通过页面元素的属性获取相应的页面元素 * 检查元素的文本 *

* Insert title here 名称:
多行文本框:
div:
亚信科技(中国)有线公司

中国
美国

By Link Text:积分商城

By Partial Link Text根据链接的部分文字 By Link Text:搜索积分商城
By CSS从名字上看,这是根据CSS来定位元素:
milk apple
*
* @author shenfl * @version V1.0 * @date 2014/7/7 */ public class TestSeleniumGrammar01 { public static final String jfWebUrl = "http://localhost:8080/SeleniumWeb/selenium01.jsp"; WebDriver wd ; @BeforeTest public void beforeTest(){ System.setProperty("webdriver.firefox.bin", "D:/Program Files/Mozilla Firefox/firefox.exe"); wd = new FirefoxDriver(); wd.manage().window().maximize(); wd.get(jfWebUrl); } @AfterTest public void afterTest(){ wd.close(); } /** * 通过Identifier(id)定位元素,只有当你明确知道元素的id属性,才能使用 */ @Test public void test01Byid() { WebElement wE = wd.findElement(By.id("wareName")); wE.clear(); wE.sendKeys("杯子"); String value = wE.getAttribute("value"); Assert.assertEquals("杯子", value); //WebElement中的getText()方法返回元素的innerText属性。所以元素里面如果有子节点一样也会被反回出来 wE = wd.findElement(By.id("area")); String v = wE.getText(); Assert.assertEquals(v, "中国移动积分商城计划"); Assert.assertTrue(v.contains("移动")); Assert.assertTrue(v.startsWith("中国")); Assert.assertTrue(v.endsWith("计划")); //此处需要使用getAttribute()方法来检查元素的属性 Assert.assertEquals("2", wE.getAttribute("rows")); wE = wd.findElement(By.id("coolestWidgetEvah")); v = wE.getText(); Assert.assertEquals("亚信科技(中国)有线公司", v); } /** * 使用id定位元素固然方面,但是id并不是html元素必须的,我们可以使用Name定位元素位置 * ①使用Name定位元素的位置,会匹配第一个与Name匹配的元素。如果页面中有多个相同的Name,可以使用更多的筛选器进行元素筛选的细化 */ @Test public void test02ByName() { WebElement we = null; //通过name获取元素 we = wd.findElement(By.name("wareName")); Assert.assertEquals("中国", we.getAttribute("value")); //By.tagname 通过tagname属性定位元素 Assert.assertEquals("input", we.getTagName()); } /** *使用CSS选择器来查找元素的时候 */ @Test public void test03CssSelector(){ WebElement wE = null; //通过css选择器获取元素:By.cssselector 通过CSS定位元素 wE=wd.findElement(By.cssSelector("input[name=wareName]")); wE.clear(); wE.sendKeys("中国"); Assert.assertEquals("中国", wE.getAttribute("value")); } /** * class指的是DOM中的元素,在实际使用过程中,会发现很多DOM元素含有相同的class名。 * *
中国
美国
*
*/ @Test public void test04ByClass(){ List guojias = wd.findElements(By.className("guojia")); for(WebElement wE:guojias){ System.out.println(wE.getText()); } } /** * By.linktext 通过文本定位链接 * * By Link Text:积分商城 * */ @Test public void test05ByLink(){ WebElement wE = wd.findElement(By.linkText("积分商城")); Assert.assertEquals("http://jf.10086.cn/", wE.getAttribute("href")); } /** * By Tag Name : DOM的Tag元素 * */ @Test public void test06ByTagName(){ WebElement we = wd.findElement(By.tagName("iframe")); Assert.assertEquals("http://jf.10086.cn/", we.getAttribute("src")); } /** * By Partial Link Text根据链接的部分文字 * * By Link Text:搜索积分商城 * */ @Test public void test07ByPartialLinkText(){ WebElement we = wd.findElement(By.partialLinkText("搜索")); Assert.assertEquals("http://jf.10086.cn/", we.getAttribute("href")); } /** * * By CSS从名字上看,这是根据CSS来定位元素:
milk apple
*
*/ @Test public void test08ByCssSelector(){ WebElement we = wd.findElement(By.cssSelector("#food span.dairy")); Assert.assertEquals("milk", we.getText()); } }


第二部分:高级语法部分

package com.testng;

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.testng.Assert;
import org.testng.annotations.AfterTest;
import org.testng.annotations.BeforeTest;
import org.testng.annotations.Test;

/**
 * 
			//By id
			WebElement ele = driver.findElement(By.id());
			//By Name
			WebElement ele = driver.findElement(By.id());
			//By className
			WebElement ele = driver.findElement(By.className());
			//By tabName
			WebElement ele = driver.findElement(By.tagName());
			//By linkText
			WebElement ele = driver.findElement(By.linkText());
			//By partialLinkText
			WebElement ele = driver.findElement(By.partialLinkText());//通过部分文本定位连接
			//By cssSelector
			WebElement ele = driver.findElement(By.cssSelector());
			//By XPATH
			WebElement ele = driver.findElement(By.xpath());
 * 
 * 

@author shenfl @version V1.0 @date 2014/7/9

*/ public class TestSeleniumGrammar02 { public static final String jfWebUrl = "http://localhost:8080/SeleniumWeb/selenium02.jsp"; WebDriver wd ; @BeforeTest public void beforeTest(){ System.setProperty("webdriver.firefox.bin", "D:/Program Files/Mozilla Firefox/firefox.exe"); wd = new FirefoxDriver(); wd.manage().window().maximize(); wd.get(jfWebUrl); } @AfterTest public void afterTest(){ wd.close(); } /** * xpath:获取处于DOM中元素 * 选择属性在XPath中,除了选择元素以外,也可以选择属性。属性都是以@开头。 * * */ @Test public void test01Xpath() { WebElement we = wd.findElement(By.xpath("//input")); Assert.assertEquals("n11", we.getAttribute("value")); //使用索引定位DOM中的第二个元素: we = we.findElement(By.xpath("//input[2]")); Assert.assertEquals("n12", we.getAttribute("value")); //查找所有input标签中含有type属性的元素 we = wd.findElement(By.xpath("//input[@id='n3']")); Assert.assertEquals("n13", we.getAttribute("value")); }
         /**
	 * XPATH语言是基于XML文档的树结构
	 * 
	 * 		
您好,欢迎访问中国移动积分商城,请[登录]
*
*/ @Test public void test02Xpath(){ WebElement we = wd.findElement(By.xpath("//*[@id='welcome']/span/a")); Assert.assertEquals("http://jf.10086.cn/login/login.jsp", we.getAttribute("href")); Assert.assertEquals("登录", we.getText()); } }



执行单元测试后,给出执行后的报告:


Selenium02-通过页面元素的属性获取相应的页面元素_第2张图片

从以上单元测试报告可以看出,正确的用例绿色显示,未通过案例红色颜色。对于出错的用例,清楚看到具体出错原因,大大方便开发者。




你可能感兴趣的:(Selenium02-通过页面元素的属性获取相应的页面元素)