使用 Java 在 Selenium WebDriver 中制作可执行文件

Posted

技术标签:

【中文标题】使用 Java 在 Selenium WebDriver 中制作可执行文件【英文标题】:Making executable file in Selenium WebDriver with Java 【发布时间】:2014-04-17 23:33:52 【问题描述】:

是否可以在 java 中制作 Selenium WebDriver 可执行文件? 我已经使用 Selenium WebDriver 在 java 中编写了用于数据驱动测试的代码。我想让它成为可执行文件,以便在 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 

  

【问题讨论】:

maven 全新安装应该在目标文件夹中生成一个 jar。 【参考方案1】:

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

谢谢!

【讨论】:

是的,我使用 Junit 编写过。我对 ant 没有任何想法。【参考方案2】:

我建议你为你的 selenium 测试项目创建一个可运行的 jar,这样你就可以在 Eclipse IDE 之外执行它。

这些链接将对您有所帮助:Make executable jar file of webdriver projectCreate runnable jar file for selenium project blog postMaking jar file of a test project in selenium webdriver

【讨论】:

据我所知,要创建 jar 文件,它应该有 main 方法。Bt 在我的 selenium 代码中没有 main 方法。并且您发送的链接(第一个链接)也没有主要方法。 如果是可运行的 jar,您可以包含一个带有 main 方法的类并以编程方式执行 junit 测试。参考这个link。【参考方案3】:

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

org.openqa.selenium.WebDriver:用于测试的主界面,代表理想化的网络浏览器。此类中的方法分为三类 - 浏览器本身的控制、WebElements 的选择、调试辅助 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();
    

来源:Test your web application’s UI with JUnit and Selenium

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

更新:创建可执行 JAR 文件。

既然你已经准备好工作的 JUnit 测试用例,你可以使用下面的main 方法的 sn-p 并创建一个可执行的 JAR 文件。

public static void main(String[] args) throws Exception                     
       JUnitCore.main("foo.bar.MyTestSuite");            

希望这能满足您的需求。

希希尔

【讨论】:

感谢您的回答。但我想要一个可执行文件。这样我就可以在 eclipse 之外执行它来执行测试用例。 用可执行文件中的更多细节更新了答案。 你能告诉我这里的 foo 、 bar 和 MyTestSuite 是什么吗? 你的包和类有 Selenium 测试用例。 你能提供你的主要方法吗?【参考方案4】:

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

这是 Eclipse 中的方法:文件/导出/Java/Runnable JAR 文件,然后选择启动配置以及您需要在 jar 中包含的其他内容。

【讨论】:

【参考方案5】:

碰巧我有一些我写的代码已经使用 maven 完成了这个工作,作为一个例子。我为你上传到了github。见https://github.com/johndeverall/executablejarseleniumwebdriverdemo

如果您运行 package.bat(在 windows 环境中)或按照 README.md 文件中的说明进行操作,maven 将为您构建一个可执行 jar 来演示 selenium webdriver 的使用。

阅读 pom.xml 以了解它是如何工作的。

您需要为此在您的机器上设置 maven(如果尚未设置),但这很简单,无论如何都值得做。

【讨论】:

【参考方案6】:

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

【讨论】:

【参考方案7】:

在工作台中创建一个新的 JAR 文件:

    从上下文菜单或菜单栏的“文件”菜单中,选择“导出”。

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

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

    在“选择导出目标”字段中,键入或单击“浏览”以选择 JAR 文件的位置并完成

    打开 CMD,移动到你的 .jar

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

【讨论】:

以上是关于使用 Java 在 Selenium WebDriver 中制作可执行文件的主要内容,如果未能解决你的问题,请参考以下文章

使用 selenium webdriver 定位由 javascript 创建的元素

selenium模块

selenium模块

selenium介绍

Selenium库

selenium webdriver窗口切换