用Java在seleniumwebdriver中生成可执行文件

用Java在seleniumwebdriver中生成可执行文件,java,eclipse,testing,selenium-webdriver,Java,Eclipse,Testing,Selenium Webdriver,可以用java制作Selenium WebDriver可执行文件吗? 我已经用java编写了使用SeleniumWebDriver进行数据驱动测试的代码。我想让它成为可执行文件,以便在eclipse之外可以执行它 package pkg; import java.util.concurrent.TimeUnit; import org.junit.After; import org.junit.Before; import org.junit.Test; import org.openqa.

可以用java制作Selenium WebDriver可执行文件吗? 我已经用java编写了使用SeleniumWebDriver进行数据驱动测试的代码。我想让它成为可执行文件,以便在eclipse之外可以执行它

package pkg;

import java.util.concurrent.TimeUnit;

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.firefox.FirefoxDriver;

public class LogingS {
  private WebDriver driver;
  private String baseUrl;

  @Before
  public void setUp() throws Exception {
    driver = new FirefoxDriver();
    baseUrl = "http://www.example.com/";
    driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
  }

  @Test
  public void testLogingS() throws Exception {
    driver.get(baseUrl);
    System.out.println("The current Url: " + driver.getCurrentUrl());
    driver.findElement(By.id("id_email")).clear();
    driver.findElement(By.id("id_email")).sendKeys("com");
    Thread.sleep(1000);
    driver.findElement(By.id("id_password")).clear();
    driver.findElement(By.id("id_password")).sendKeys("123");
    Thread.sleep(1000);
    System.out.println("The current Url: " + driver.getCurrentUrl());
    driver.findElement(By.id("btn_login")).submit();
    Thread.sleep(5000);
    System.out.println("The current Url: " + driver.getCurrentUrl());

  }

  @After
  public void tearDown() throws Exception {

  }
}

您是否尝试过使用ant脚本来运行测试用例,我假设您已经使用Junit编写了测试用例


谢谢

我建议您为selenium测试项目创建一个可运行的jar,以便能够在Eclipse IDE之外执行它

这些链接将帮助您:



如果您是使用jUnits的测试用例,那么在Eclipse中执行它们非常简单。但在此之前,您需要执行核心Selenium类,这些类将经常为您提供帮助

  • org.openqa.selenium.WebDriver
    :用于测试的主界面,代表理想化的web浏览器。此类中的方法分为三类:浏览器本身的控制、WebElement的选择和调试辅助
  • org.openqa.selenium.WebElement
    :表示HTML元素。通常,与页面交互的所有有趣操作都将通过该接口执行
  • org.openqa.selenium.By
    :用于在文档中定位元素的机制
下面是一个示例类,它演示了一个Selenium测试用例

import static org.hamcrest.Matchers.equalTo;
import static org.junit.Assert.assertThat;

import org.junit.Before;
import org.junit.Test;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.htmlunit.HtmlUnitDriver;

public class TestEndToEndPages {

    private WebDriver driver;

    @Before
    public void setUp() {
        // Create a new instance of the html unit driver
        driver = new HtmlUnitDriver();

        //Navigate to desired web page
        driver.get("http://localhost:6060/WebApplication4Selenium");
    }

    @Test
    public void shouldBeAbleEnterUserNameAndClickSubmitToVerifyWelcomeMessage() 
    {
        // verify title of index page
        verifyTitle("Enter your name");

        //verify header of index page
        verifyHeaderMessage("Please enter your name");

        //enter user name as Allen
        enterUserName("Allen");

        //verify title of welcome page
        verifyTitle("Welcome");

        //verify header of welcome page
        verifyHeaderMessage("Welcome Allen!!!");

        //verify back link and click on it
        backToPreviousPage("go back");  

        //verify title of index page again to make sure link is working
        verifyTitle("Enter your name");
    }

    private void verifyTitle(String expectedTitle) {
        //get the title of the page
        String actualTitle = driver.getTitle();

        // verify title
        assertThat(actualTitle, equalTo(expectedTitle));
    }

    private void verifyHeaderMessage(String expectedHeaderMessage) {
        // find header element
        WebElement element = driver.findElement(By.tagName("h3"));

        String actualHeaderMessage = element.getText();

        // verify header text
        assertThat(actualHeaderMessage, equalTo(expectedHeaderMessage));
    }

    private void enterUserName(String userName) {
        // find the input text box
        WebElement element = driver.findElement(By.name("userName"));

        // set the user name in input text box
        element.sendKeys(userName);

        // submit form
        element.submit();
    }

    private void backToPreviousPage(String expectedLinkText) {
        // find the link by its id
        WebElement element = driver.findElement(By.id("back"));

        //get the actual link text
        String actualLinkText = element.getText(); 

        //verify link text with expected like text
        assertThat(actualLinkText, equalTo(expectedLinkText));

        // click the link
        element.click();
    }
}
资料来源:

如果仔细查看上述测试类中的注释,您将能够找到如何导航到页面,或者如何找到元素来执行某些操作,如获取文本、设置值、触发任何事件等

更新:创建可执行JAR文件

因为您已经准备好了工作JUnit测试用例,所以您可以使用下面的
main
方法片段并创建一个可执行的JAR文件

public static void main(String[] args) throws Exception {                    
       JUnitCore.main("foo.bar.MyTestSuite");            
}
希望这能满足你的需求


Shishir是的,你可以。您只需要导出为可执行jar文件。 如果您想使它完全独立,只需将所有库文件和属性文件包含在一个jar中即可


以下是Eclipse中的方法:File/Export/Java/Runnable JAR File,然后选择launch configuration,以及您需要在JAR中包含哪些内容

碰巧我写了一些代码,这些代码已经使用maven实现了这一点,作为一个例子,maven工作得很好。我帮你上传到github。看

如果您运行package.bat(在windows环境中)或遵循README.md文件中的说明,maven将为您构建一个可执行的jar,演示selenium webdriver的用法

阅读pom.xml以了解其工作原理


您需要在您的机器上为此设置maven(如果尚未设置),但无论如何,这都是微不足道的,值得一做

将其导出为jar文件,在本地保存,创建批处理文件并调用jar来执行脚本。

要在工作台中创建新的jar文件:

  • 从关联菜单或菜单栏的“文件”菜单中,选择“导出”

  • 展开Java节点并选择JAR文件。单击下一步

  • 在JAR文件规范页面中,在选择要导出的资源字段中选择要导出的资源

  • 在SelecttheExportDestination字段中,键入或单击Browse为JAR文件选择一个位置并完成

  • 打开CMD,移动到你的.jar

  • 使用以下命令调用jar文件:- java-jarxxx.jar


  • 是的,我使用Junit编写过。我对ant没有任何想法。我知道,要创建jar文件,它必须有main method.Bt,在我的selenium代码中没有main方法。并且u hav发送给taht的链接(第一个链接)也没有main方法。在runnable jar的情况下,您可以包含一个带有main方法的类,并以编程方式执行junit测试。参考这个。谢谢你的回复。但是我想要一个可执行文件。这样我就可以在eclipse之外执行它来执行测试用例。在可执行文件中更新了答案并提供了更多细节。你能告诉我这里的foo、bar和MyTestSuite是什么吗?是你的包和类包含Selenium测试用例。你能提供你的主要方法吗?maven clean install应该在目标文件夹中生成一个jar。