使用 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 中制作可执行文件的主要内容,如果未能解决你的问题,请参考以下文章