@Test(priority = 4, dataProvider = "dataProviderForMusicBlog") public void musicBlogTest(TestParameters testParams) throws UnsupportedEncodingException, InterruptedException, MalformedURLException { if (m1 == null || m1.size() == 0) throw new SkipException("Map is empty"); String URL = "http://one.airtel.in/iportal?dg=5&lang=en"; BaseUtil.launchUrl(URL, false); // BaseUtil.scrollingToBottomofAPage(); By locater = By.xpath( "//div[@id='paginateOuter']//div[@class='cardOuter']/article[contains(@class,'card music-card')]//div[@class='add-on']//p[@class='link']/a[contains(.,'Listen Now')]"); while (!BaseUtil.checkIfElementPresent(locater, 1)) { BaseUtil.scrollingToBottomofAPage(); } BaseUtil.scrollingToElementofAPage(locater); // WebElement elem = BaseUtil.getElementWhenClickable(locater); WebElement elemButton = BaseUtil.getElementWhenVisible(locater); String whole = BaseUtil.getText(elemButton).trim(); String ButtonURL = BaseUtil.getAttribute(elemButton, "onclick"); System.out.println("News URL:\t" + ButtonURL); System.out.println("BlogText:\t" + whole); By locater1 = By.xpath( "//div[@id='paginateOuter']//div[@class='cardOuter']/article[contains(@class,'card music-card')]//div[@class='add-on']//p[@class='text']"); WebElement elemText = BaseUtil.getElementWhenVisible(locater1); String wholeTitle = BaseUtil.getText(elemText).trim(); System.out.println("BlogTitle:\t" + wholeTitle); elemButton.click(); Pattern pattern = Pattern.compile(".*'([^']*)'.*"); Matcher matcher = pattern.matcher(ButtonURL); String p2 = ""; if (matcher.matches()) { String url = matcher.group(1); URL url1 = new URL(url); String query = url1.getQuery(); // Decode two time query url String p1 = URLDecoder.decode(query, "UTF-8"); p2 = URLDecoder.decode(p1, "UTF-8"); System.out.println("BlogUrl==>" + p2); } Reporter.log("Verify POD Blog url with the api result", m1.get(wholeTitle), p2, "Pass"); Assert.assertEquals( p2.trim().contains(m1.get(wholeTitle)), true, "Verify POD Blog url with the api result"); BaseUtil.browserBackButton(); }
@Test(priority = 3, dataProvider = "dataProviderForMusicViewAll") public void musicViewALLTest(TestParameters testParams) throws UnsupportedEncodingException, InterruptedException, MalformedURLException { String URL = "http://one.airtel.in/iportal?dg=5&lang=en"; BaseUtil.launchUrl(URL, false); // BaseUtil.scrollingToBottomofAPage(); By locater = By.xpath( "//div[@class='cardOuter']/article[contains(@class,'card music-card')]//div[@class='heading']/span[@class='view-all' and contains(.,'View All')]/a"); while (!BaseUtil.checkIfElementPresent(locater, 1)) { BaseUtil.scrollingToBottomofAPage(); } BaseUtil.scrollingToElementofAPage(locater); // WebElement elem = BaseUtil.getElementWhenClickable(locater); WebElement elemheading = BaseUtil.getElementWhenVisible(locater); String whole = BaseUtil.getText(elemheading).trim(); String HeadingURL = BaseUtil.getAttribute(elemheading, "onclick"); System.out.println("News URL:\t" + HeadingURL); System.out.println("BlogText:\t" + whole); elemheading.click(); Pattern pattern = Pattern.compile(".*'([^']*)'.*"); Matcher matcher = pattern.matcher(HeadingURL); String p2 = ""; if (matcher.matches()) { String url = matcher.group(1); URL url1 = new URL(url); String query = url1.getQuery(); // Decode two time query url String p1 = URLDecoder.decode(query, "UTF-8"); p2 = URLDecoder.decode(p1, "UTF-8"); System.out.println("BlogUrl==>" + p2); } Reporter.log("Verify POD Blog url with the api result", externalLinkUrl, p2, "Pass"); Assert.assertEquals( p2.trim().contains(externalLinkUrl), true, "Verify POD Blog url with the api result"); BaseUtil.browserBackButton(); }
/** * 入口 * * @return */ public String execute() throws Exception { // 判服务名称不为空 if (StringUtils.isBlank(merchantCode) || StringUtils.isBlank(orderNo)) { // 组织失败结果 write(createFailResponse("商户号或者订单号不能为空!")); return null; } // 验证签名 String preMd5Str = merchantCode + orderNo + PropertyUtil.getInstance().getProperty(BaseInterface.MD5_KEY_WITH_BACK); String generateSign = new MD5Util().md5(preMd5Str); if (!StringUtils.equalsIgnoreCase(sign, generateSign)) { // 组织失败结果 write(createFailResponse("签名验证失败!")); return null; } PayRecord payRecord = payRecordService.getPayRecord(merchantCode, orderNo); if (payRecord == null) { // 记录不存在 // 组织失败结果 write(createFailResponse("记录不存在!")); return null; } else { // 记录存在 不判状态,强制查询 // 分发处理器 向银行发起查询 ISingleTradeQueryResolver singleTradeQueryResolver = SingleTradeQueryResolverDispatcher.dispatch(); // 查询交易 SingleTradeQueryResult singleTradeQueryResult = singleTradeQueryResolver.query(payRecord); // 判断查询结果 if (!singleTradeQueryResult.isQuerySuccess()) { // 查询失败 write(createFailResponse("查询银行返回异常发生!")); return null; } else { // 查询成功 // 定义查询返回结果 int queryPayState; String tradeDateTime; String tradeBankSeq; // 判交易存在 if (!singleTradeQueryResult.isExist()) { // 不存在 queryPayState = PayRecordInterface.STATE_FAILED; tradeDateTime = StringUtils.EMPTY; tradeBankSeq = StringUtils.EMPTY; } else { // 存在 queryPayState = singleTradeQueryResult.getTradeState(); tradeDateTime = singleTradeQueryResult.getTradeDateTime(); tradeBankSeq = singleTradeQueryResult.getTradeBankSeq(); } // 由于查询交易消耗时间 重新查询最新的支付记录 payRecord = payRecordService.getPayRecordByTradeNo(payRecord.getTradeNo()); // 查询前老的状态 int oldTradeState = payRecord.getTradeState(); // 为支付状态判优先级 优先则需要修改 boolean needUpdate = BaseUtil.comparePriorityForPayState(queryPayState, payRecord.getTradeState()); if (!needUpdate && (queryPayState != payRecord.getTradeState())) { // 这里比较只为记录下,不需要修改但是又强制修改了的数据,而且前后状态不一致的,log记录异常: logger.error("_FORCE_UPDATE_NOT_NEED_UPDATE_PAY_RECORD_->" + payRecord.toString()); } /** 修改最新交易状态(不比较状态优先级,强制修改记录,以银行返回状态为准) */ payRecord.setTradeState(queryPayState); payRecord.setTradeDateTime(tradeDateTime); payRecord.setTradeBankSeq(tradeBankSeq); payRecord.setTradeDesc(BaseUtil.translatePayRecordStateDesc(queryPayState)); payRecord.setUpdateDate(DateUtil.getNowDate()); payRecord.setUpdateTime(DateUtil.getNowTime()); payRecord.setUpdateIp(IPAddressUtil.getIPAddress(request)); // 银行返回交易状态【强制】修改支付记录 payRecordService.forceUpdateTradeState(payRecord); tradeDateTime = payRecord.getTradeDateTime(); if (StringUtils.isBlank(tradeDateTime)) { tradeDateTime = payRecord.getCreateDate() + payRecord.getCreateTime(); } // 组织成功结果 write( createSuccessResponse( oldTradeState, payRecord.getTradeState(), StringUtils.trimToEmpty(payRecord.getTradeDesc()))); return null; } } }