selenium+httpclient知识点整理

selenium:
public static final Logger logger = LoggerFactory.getLogger(AssertUtil.class);

启动浏览器

System.setProperty("webdriver.firefox.bin","E:\\huohu\\firefox.exe");
      FirefoxDriver  driver = new FirefoxDriver();

八大定位元素
id,name,class_name,link_text,print_link_text
等待
//强制等待1S

Thread.sleep(1000);

//隐式等待等待5秒

driver.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS);

//显式等待3秒

WebDriverWait wait = new WebDriverWait(driver, 3);

//3秒内找不到此元素,TimeOutException报错

wait.until(ExpectedConditions.presenceOfAllElementsLocatedBy(By.name("wd")))

ExpectedConditions其他用法*********
titleIs判断当前页面的title是否等于预期。
titleContains判断当前页面的title是否包含预期字符串。
urlToBe判断当前页面的url是否等于预期。
urlContains判断当前页面的url是否包含预期字符串。
presenceOfElementLocated判断元素是否出现,出现就通过。
visibilityOfElementLocated判断某个元素是否可见,可见代表元素非隐藏。
elementToBeSelected页面元素处于被选中状态。
————————————————

获取表格元素

public static void getRangeFromRows(WebDriver driver){
		WebElement table= driver.findElement(By.xpath("//*[@id='product_mgt_wrap']/div[1]/div[2]/div[2]/div[2]/div[2]/table"));
		List<WebElement> rows = table.findElements(By.tagName("tr"));
		for(WebElement row:rows){
			List<WebElement> col = row.findElements(By.tagName("td"));
			for(WebElement cell:col){
				System.out.print(cell.getText() + "\t");
			}
			System.out.print("\n\t");
		}
	}

获取下拉框

<select name='唐代诗人' id='poet'>
	<option value='01'>李白</option>
	<option value='02'>李白2</option>
	<option value='03'>李白3</option>
<select>
// 定位select标签下拉框
		WebElement ele=driver.findElement(By.id("poet"));
		// 实例化select方法
		Select select_ele=new Select(ele);
		// 通过select索引定位选择下拉框元素,注意索引从0开始
		select_ele.selectByIndex(1);
		// 通过select的value定位选择下拉框元素
		select_ele.selectByValue("03");
		// 通过select的文本内容定位选择下拉框元素
		select_ele.selectByVisibleText("白居易");

模拟鼠标移动

 Actions action = new Actions(driver);
 action.dragAndDrop(driver.findElementByLinkText("新闻"),driver.findElementByLinkText("设置")).perform();    //鼠标从一个位置移动到指定位置

断言
==1.“断言方式:equalToIgnoringCase 实际值:” + actual + " 期望值:" + expect

try {
      assertThat(errMsg, actual, equalToIgnoringCase(expect));
    } catch (AssertionError e) {
	logger.error(errMsg, e);
	throw e;
    }

TestNG中常用的断言方法:

assertEquals(String actual, String expected)  //判断真实值与预期值是否相等,如果不相等测试失败会抛出一个异常

       assertEqual(String actual,String expected, Stringmessage) //检查两个字符串是否相等, 如果不相等,测试失败, 且在抛出异常中打印出我们提供的第三个message参数信息

  assertTrue(boolean condition) //如果值为true,则用例通过,否则抛出一个AssertionError异常

  assertFalse(boolean condition)
通过一下的方法可以获取当前的信息。
getTitle(): 用于获得当前页面的title。
getCurrentUrl() : 用户获得当前页面的URLgetSourcePage() 获取页面文本信息  

二、断言的三种形式:assert 、verify、waitfor
Assert 失败时,该测试将终止。
Verify 失败时,该测试将继续执行,并将错误记入日显示屏 。也就是说允许此单个 验证通过。确保应用程序在正确的页面上。
Waitfor用于等待某些条件变为真。可用于AJAX应用程序的测试。
如果该条件为真,他们将立即成功执行。如果该条件不为真,则将失败并暂停测试。直到超过当前所设定的超时时间。 一般跟setTimeout时间一起用

pom文件内容
日志打印jar包,selenium依赖-,自动化报告打包extentreports,testng-extentsreport;保存为实际的对象
quit,close区别
close方法是,关闭当前窗口
quit方法就是直接退出并关闭所有关联的tab窗口。
测试报告编写
一、概要
1、编写目的:背景,测试内容,
2、测试人员
3、测试环境
4.测试资源
二、测试过程
1、测试进度
2、用例执行情况
3、缺陷统计==修复率=bug修复/bug总数
三、缺陷分析
1、按照模块
2.按照级别
3.按照版本趋势
四、测试总结
1、测试结论
本次测试通过,执行率100%,通过率95.3%,修复率为89.9%,遗留缺陷有4个,轻微缺陷有2个,次要缺陷2个
2、测试风险
testng

suit-test-classes-class-methods-include
listeners

接口httpclient
步骤

1.创建一个可关闭的httpclient对象
2.new HttpPost(url);
3.设置构造一个contentbody实现类对象
4.设置构造一个上传文件的entity
5.设置上传的ContentType,设置浏览器模式
6.new StringBody防止普通的表单字段如含有中文的话会乱码
7.给MultipartEntityBuilder的entity设置HttpEntity上传参数
8.给httppost.setEntity值
9.设置一个可关闭的CloseableHttpResponse
10.抛异常
11.获取客户端的.execut(httpPost); 返回一个response
12.获取response的.getEntity()应该是实体类,
13.以JSON格式获取到反馈的主体

public JSONObject getBodyInJSON() throws ParseException, IOException{

	HttpEntity entity;

	String entityToString;

	entity = httpResponse.getEntity();

	entityToString = EntityUtils.toString(entity);

	responseBody = JSON.parseObject(entityToString);

	System.out.println("This is your response body" + responseBody);

	return responseBody;

}

//以哈希图的方式获取到反馈头部

public HashMap getHeaderInHash(){

	Header[] headers;

	headers = httpResponse.getAllHeaders();

	responseHeads = new HashMap();

	for(Header header:headers){

		responseHeads.put(header.getName(), header.getValue());

	}

	System.out.println("This is your response header" + responseHeads);

	return responseHeads;

}

//获取反馈状态码

public int getCodeInNumber(){

	responseCode = httpResponse.getStatusLine().getStatusCode();

	System.out.println("This is your response code" + responseCode);

	return responseCode;

}

getResponse:发送请求并获取反馈;

getBodyInJSON:获取JSON格式的反馈主体;

getCodeInNumber:获取反馈状态码;

getHeaderInHash:获取哈希图形式的反馈头;

=http请求头有哪些
HTTP Request Header 请求头:
Content-Length:请求的内容长度。
Content-Type:请求的与实体对应的MIME信息。
Referer:先前网页的地址,当前请求网页紧随其后,即来路。
Host:指定请求的服务器的域名和端口号。
Date:请求发送的日期和时间。
Accept:指定客户端能够接收的内容类型。
Accept-Charset:浏览器可以接受的字符编码集。
HTTP Responses Header 响应头:
Content-Language:响应体的语言。
Content-Length:响应体的长度。
Content-Type:返回内容的MIME类型。
Date:原始服务器消息发出的时间。
Warning:警告实体可能存在的问题。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值