使用junit请求运行selenium脚本

时间:2015-04-02 08:13:23

标签: selenium jmeter junit4 junit3

我将首先解释一下我是如何按照这个概念进行的,如果我出错了,那么家伙可以纠正我......

所以我遵循的步骤

1)使用add libs添加了junit4库 2)并在Referenced Libs下添加了jar selenium-server-standalone-2.45.0.jar 3)现在使用junit4 annotations

编写以下代码
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;


public class jUnitSampler1 {

    WebDriver driver = null;


    public String peace;





    @Before
    public void myOwnInitMethod()
    {

        System.out.println("I am in SetUp...");

    }


    @After
    public void myOwnCleanUpMethod()
    {

        System.out.println("I am in tearDown");

    }


    @Test
    public void testSearchGoogle()
    {

        System.setProperty("webdriver.chrome.driver", "D:\\chromedriver.exe");
        driver = new ChromeDriver();
        driver.get("http://google.com");
        driver.manage().timeouts().implicitlyWait(2, TimeUnit.SECONDS);
        driver.findElement(By.id("lst-ib")).sendKeys("Selenium");
        driver.manage().timeouts().implicitlyWait(2, TimeUnit.SECONDS);
        driver.findElement(By.name("btnG")).click();
        driver.manage().timeouts().implicitlyWait(2, TimeUnit.SECONDS);
        System.out.println("The title of the page is:"+driver.getTitle());
        driver.manage().timeouts().implicitlyWait(2, TimeUnit.SECONDS);
        driver.quit();

    }



}

现在这里是junit采样器上apache jmeter教程的混淆,说如果不是一个空的构造函数,本实现将采用单个字符串构造函数。现在根据我的知识,当我们不在代码中创建构造函数时,默认情况下会创建一个构造函数。所以在这里创建一个空构造函数被排除在外。至于字符串构造函数,如果我们要在代码中使用单个字符串构造函数,则可以用

编写
public class jUnitSampler1 extends TestCase{

public jUnitSampler1 (String text)
{
super(text);
}

public junitSampler1()
{
}

这段代码也在执行但是使用junit3而不是junit4。因为在junit4中没有必要扩展到testcase并且junit3和junit4的组合不适合执行但我在eclipse中也试过它在jmeter中执行它不是。现在用于其他步骤

创建jar后,我放入junit文件夹,并在添加junit请求采样器和监听器并运行后,立即将服务器独立jar放在lib文件夹中。我得到错误声明我需要单个字符串构造函数。我添加了相同的内容并将我的代码转换为junit3注释代码并重新运行代码,创建了另一个jar。并使用相同的步骤为junit采样器。这次我没有错误没有适当的警告。结果显示响应代码:1000这是一个成功代码,但没有成功消息。这是我被卡住了。任何帮助将不胜感激....

确定找到了解决方案........................................

Junit Request Sampler

1)将selenium-java-2.45.0或最新版本的jar内容转移到apache-jmeter-2.13-> lib 2)确保没有相同文件的重复/旧版本,因为只应存在任何文件的最新版本 3)从这里下载最新的chromedriver 4)从这里下载最新的httpclient jar 5)下载selenium独立服务器 6)从Mozilla文件夹复制firefox.exe(如果我们要使用firefox浏览器启动) 7)将所有下载和复制的文件放入jmeter的lib文件夹中,并确保没有旧版本或文件的重复版本 8)以junit4格式编写selenium脚本尽管junit sampler也支持junit3注释

在继续进行之前,让我们了解junit4和junit3注释之间的区别及其对selenium脚本的影响

a)在junit3中,我们必须使用@Before和@After注释编写setup(),teardown()方法(方法名称太具体而不能相同),我们不能更改方法名称,否则脚本不会运行正常。在Junit4中,我们可以编写相同的方法,但我们也可以根据我们的要求更改名称,但注释...

Junit3

@Before
public void setUp()
{
}

@After
public void tearDown()
{
}

Junit4

@Before
public void myOwnInitMethod()
{
}

@After
public void myOwnCleanUpMethod()
{
}

b)在Junit 3.x中,必须特别命名jUnit方法。他们需要从单词test开始,以便JUnit将其作为测试用例运行。

Junit3

@Test
public void testSearchGoogle1() throws Exception
{
}

Junit4

@Test
public void myMethod() {

}

c)我们不需要编写测试类来扩展到junit.framework.TestCase

Junit3

Public class selenium extends TestCase{
}

Junit4

Public class selenium{
}

d)如果我们想要进行一次设置(在类加载开始时进行初始化)并且一次拆除(在我们运行所有测试用例之后进行清理),我们现在可以使用@BeforeClass和@AfterClass注释。 e)JUnit 4允许静态导入断言类 f)您可以忽略带有@Ignore注释的测试用例 g)将Junits作为套件运行现在变得更加简单 h)Junit 4.x允许我们在单元测试示例中预期异常

@Test(expected=NullPointerException.class)
public void testMyMethodForNullPointer() {
//Your piece of code that throws null pointer exception
}

i)使用JUnit 4.x,我们可以使用一些注释运行带有多个参数的相同测试。要编写参数化测试,我们可以将类级别注释@RunWith(Parameterized.class)告诉JUnit运行参数化测试。然后在我们的类中,我们可以使用注释@Parameters告诉JUnit一个用作参数的集合列表。构造函数将知道如何初始化我们的参数。 9)脚本示例

10)包浏览器应该如下所示

11)运行junit下的代码以纠正任何问题(如果可能发生) 12)现在右键单击项目并将其作为jar导出到jmeter的junit文件夹 13)点击bin文件夹中的jmeter.bat启动jmeter 14)添加线程组,junit采样器和一个如下图所示的监听器

15)在junit请求采样器中选中“搜索junit4注释(而不是junit3)”复选框以使用junit4带注释的测试脚本 16)如果选择了那个,那么我们可以看到我们的类名是需要选择的类名下拉列表,并且还选择我们需要测试的方法,该方法来自测试方法下拉列表 17)junit采样器必须看起来像这样

18)保存并运行 19)观察启动浏览器并执行selenium脚本

0 个答案:

没有答案