使用Selenium自动化测试SAP CRM WebClient UI

简介:
<meta charset="utf-8">

package com.xc.crm.test;

import  static  org.junit.Assert.*;

import org.junit.After;

import org.junit.Before;

import org.junit.Test;

import org.openqa.selenium.By;

import  org.openqa.selenium.NoSuchElementException;

import org.openqa.selenium.WebDriver;

import  org.openqa.selenium.WebElement;

import org.openqa.selenium.firefox.FirefoxDriver;

import  org.openqa.selenium.ie.InternetExplorerDriver;

import  org.openqa.selenium.remote.DesiredCapabilities;

import  org.openqa.selenium.support.ui.ExpectedCondition;

import  org.openqa.selenium.support.ui.WebDriverWait;

public  class CRMTest

{

 private WebDriver myDriver;

 private  String  crmURL;

 private  String  mainWindowHandle;

 private  String  popupWindowHandle;

 @Before

 public  void setUp() throws Exception

       {

//     System.setProperty("webdriver.ie.driver","C:\\xiechuan\\30_Software\\02_Selenium\\IEDriverServer_x64_2.26.2\\IEDriverServer.exe");

//            DesiredCapabilities ieCapabilities = DesiredCapabilities.internetExplorer();

//     ieCapabilities.setCapability(InternetExplorerDriver.INTRODUCE_FLAKINESS_BY_IGNORING_SECURITY_DOMAINS,true);

//            myDriver = new InternetExplorerDriver(ieCapabilities);

 myDriver = new FirefoxDriver();

 crmURL = "https://ldcijerry.corp:44354/sap/bc/bsp/sap/crm_ui_start/default.htm";

       }

 @After

 public  void tearDown() throws Exception

       {

       }

 @Test

 public  void test() throws InterruptedException

       {

              System.out.println("--- Test Start ---");

 // This is for initial the tab in browser

 // myDriver.navigate().to("[http://www.soso.com/](http://www.soso.com/)");

 // Thread.sleep(5000);

 myDriver.navigate().to(crmURL);

              System.out.println("In Testing: Open CRM Logon page");

              Thread.sleep(15000);

 myDriver.findElement(By.id("sap-user")).clear();

 myDriver.findElement(By.id("sap-password")).clear();

 myDriver.findElement(By.id("sap-user")).sendKeys("XIE");

 myDriver.findElement(By.id("sap-password")).sendKeys("Xc12");

 myDriver.findElement(By.cssSelector("span.urBtnCntTxt")).click();

              System.out.println("In Testing: Logon on CRM");

              Thread.sleep(15000);

 myDriver.findElement(By.id("SERVICEPRO")).click();

              System.out.println("In Testing: Click Service Professional");

              Thread.sleep(30000);

 myDriver.switchTo().frame("CRMApplicationFrame");

              Thread.sleep(10000);

 myDriver.switchTo().frame("WorkAreaFrame1");

              Thread.sleep(10000);

              System.out.println("In Testing: Switched to CRMApplicationFrame-WorkAreaFrame1");

 // Create service order

 // AG3

 // myDriver.findElement(By.id("C5_W18_V19_SRV-ORD-DC")).click();

 // QD3

 myDriver.findElement(By.id("C5_W19_V20_SRV-ORD-DC")).click();

              System.out.println("In Testing: Click to create Service Order");

              Thread.sleep(20000);

 // AG3

 // myDriver.findElement(By.id("C31_W109_V112_V113_btrefobjmain_struct.ib_ibase-btn")).click();

 // QD3

 myDriver.findElement(By.id("C32_W114_V117_V118_btrefobjmain_struct.ib_ibase-btn")).click();

              System.out.println("In Testing: Click value help to search IBase");

 mainWindowHandle = myDriver.getWindowHandle();

              System.out.println("In Testing: " + "Main Window: " + mainWindowHandle + " / " + myDriver.getTitle());

              Thread.sleep(10000);

 for (String myHandle : myDriver.getWindowHandles())

              {

                     System.out.println("In Testing: " + "Current Handle: " + myHandle);

 if(!myHandle.equals(mainWindowHandle))

                     {

 popupWindowHandle = myHandle;

 myDriver.switchTo().window(popupWindowHandle);

                           System.out.println("In Testing: " + "Popup Window: " + myDriver.getWindowHandle() + " / " + myDriver.getTitle());

 break;

                     }

              }

 myDriver.switchTo().frame("WorkAreaFrame1");

              System.out.println("In Testing: Switched to pop-up WorkAreaFrame1");

              Thread.sleep(20000);

 // Enter IBase ID

 // AG3

 // myDriver.findElement(By.id("C36_W133_V135_V136_V141_search_parameters[1].VALUE1")).clear();

 // myDriver.findElement(By.id("C36_W133_V135_V136_V141_search_parameters[1].VALUE1")).sendKeys("4448");

 // QD3

 myDriver.findElement(By.id("C37_W137_V139_V140_V145_search_parameters[1].VALUE1")).clear();

 myDriver.findElement(By.id("C37_W137_V139_V140_V145_search_parameters[1].VALUE1")).sendKeys("12");

              System.out.println("In Testing: Pop-up search parameter entered");

 // Click search button

 // AG3

 // myDriver.findElement(By.id("C36_W133_V135_Searchbtn")).click();

 // QD3

 myDriver.findElement(By.id("C37_W137_V139_Searchbtn")).click();

              System.out.println("In Testing: Click search button in Pop-up window");

              Thread.sleep(10000);

 // Select the row in search result

 // AG3

 // myDriver.findElement(By.id("C36_W133_V135_V137_Table_sel_1-rowsel")).click();

 // QD3

 myDriver.findElement(By.id("C37_W137_V139_V141_Table_sel_1-rowsel")).click();

              System.out.println("In Testing: Select search result in Pop-up window");

              Thread.sleep(10000);

              System.out.println("--- Test End ---");

       }

}
相关文章
|
13天前
|
Java 测试技术 Python
《手把手教你》系列基础篇(八十)-java+ selenium自动化测试-框架设计基础-TestNG依赖测试-番外篇(详解教程)
【6月更文挑战第21天】本文介绍了TestNG中测试方法的依赖执行顺序。作者通过一个实际的自动化测试场景展示了如何设计测试用例:依次打开百度、搜索“selenium”、再搜索“selenium+java”。代码示例中,`@Test`注解的`dependsOnMethods`属性用于指定方法间的依赖,确保执行顺序。如果不设置依赖,TestNG会按方法名首字母排序执行。通过运行代码,验证了依赖关系的正确性。
35 4
|
1天前
|
XML 测试技术 数据格式
《手把手教你》系列基础篇(八十五)-java+ selenium自动化测试-框架设计基础-TestNG自定义日志-下篇(详解教程)
【7月更文挑战第3天】TestNG教程展示了如何自定义日志记录。首先创建一个名为`TestLog`的测试类,包含3个测试方法,其中一个故意失败以展示日志。使用`Assert.assertTrue`和`Reporter.log`来记录信息。接着创建`CustomReporter`类,继承`TestListenerAdapter`,覆盖`onTestFailure`, `onTestSkipped`, 和 `onTestSuccess`,在这些方法中自定义日志输出。
17 6
|
14小时前
|
Java 测试技术 Apache
《手把手教你》系列基础篇(八十六)-java+ selenium自动化测试-框架设计基础-Log4j实现日志输出(详解教程)
【7月更文挑战第4天】Apache Log4j 是一个广泛使用的 Java 日志框架,它允许开发者控制日志信息的输出目的地、格式和级别。Log4j 包含三个主要组件:Loggers(记录器)负责生成日志信息,Appenders(输出源)确定日志输出的位置(如控制台、文件、数据库等),而 Layouts(布局)则控制日志信息的格式。通过配置 Log4j,可以灵活地定制日志记录行为。
13 4
|
11天前
|
Java 测试技术 Python
《手把手教你》系列基础篇(八十一)-java+ selenium自动化测试-框架设计基础-TestNG如何暂停执行一些case(详解教程)
【6月更文挑战第22天】本文介绍了如何在TestNG中不执行特定测试用例。当部分模块未准备好时,可以通过以下方式暂停测试:③使用`@Test(enabled=false)`注解来禁用测试用例。作者提供了一个Java Selenium自动化测试的示例,展示如何通过修改`enabled`参数控制测试方法的执行。代码中,`testSearch2()`方法被禁用,因此在测试运行时不执行。文章还包含了测试报告和执行过程的截图。
37 7
|
8天前
|
XML 测试技术 数据格式
软件测试之 自动化测试 基于Python语言使用Selenium、ddt、unitTest 实现自动化测试(下)
软件测试之 自动化测试 基于Python语言使用Selenium、ddt、unitTest 实现自动化测试(下)
19 3
|
8天前
|
Java 测试技术 程序员
软件测试之 自动化测试 基于Python语言使用Selenium、ddt、unitTest 实现自动化测试(上)
软件测试之 自动化测试 基于Python语言使用Selenium、ddt、unitTest 实现自动化测试(上)
27 1
|
14天前
|
Java 测试技术 Python
《手把手教你》系列基础篇(七十九)-java+ selenium自动化测试-框架设计基础-TestNG依赖测试-下篇(详解教程)
【6月更文挑战第20天】TestNG是一个Java测试框架,提供两种测试方法依赖机制:强依赖(所有前置方法成功后才运行)和弱依赖(即使前置方法失败,后置方法仍运行)。文中通过代码示例展示了这两种依赖如何实现,并解释了当依赖方法失败时,如何影响后续方法的执行。文章还包含了TestNG Suite的运行结果截图来辅助说明。
33 8
|
10天前
|
XML Java 测试技术
《手把手教你》系列基础篇(八十二)-java+ selenium自动化测试-框架设计基础-TestNG测试报告-上篇(详解教程)
【6月更文挑战第23天】TestNG 是一个用于自动化测试的 Java 框架,它自动生成测试报告,包括 HTML 和 XML 格式。报告可在 `test-output` 文件夹中找到。要创建测试用例,可创建一个实现了 `@Test` 注解的方法。通过 `testng.xml` 配置文件来组织和执行测试。默认报告包括测试结果、失败点和原因。用户还能实现 `ITestListener` 和 `IReporter` 接口来自定义报告和记录器。
28 2
|
2天前
|
Java 测试技术 Android开发
《手把手教你》系列基础篇(八十四)-java+ selenium自动化测试-框架设计基础-TestNG日志-上篇(详解教程
【7月更文挑战第2天】TestNG是一个用于自动化测试的Java框架,提供日志记录功能。日志有两种模式:底层级详细记录每个步骤,高层级仅记录关键事件。示例代码展示了如何在测试方法中使用`Reporter.log()`记录信息,这些信息会显示在TestNG HTML报告中。文章还提及了日志显示时可能出现的编码问题及解决办法。
|
3天前
|
XML 测试技术 数据格式
《手把手教你》系列基础篇(八十三)-java+ selenium自动化测试-框架设计基础-TestNG测试报告-下篇(详解教程)
【7月更文挑战第1天】使用TestNG自定义报告的简要说明: - TestNG提供默认的HTML和XML报告,但可通过实现IReporter接口创建自定义报告。 - 自定义报告器类需扩展`CustomReporter.java`,实现`generateReport()`方法,接收XML套房、测试结果及输出目录作为参数。
14 0