用Java在seleniumwebdriver中生成可执行文件
可以用java制作Selenium WebDriver可执行文件吗? 我已经用java编写了使用SeleniumWebDriver进行数据驱动测试的代码。我想让它成为可执行文件,以便在eclipse之外可以执行它用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.
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类,这些类将经常为您提供帮助
:用于测试的主界面,代表理想化的web浏览器。此类中的方法分为三类:浏览器本身的控制、WebElement的选择和调试辅助org.openqa.selenium.WebDriver
:表示HTML元素。通常,与页面交互的所有有趣操作都将通过该接口执行org.openqa.selenium.WebElement
:用于在文档中定位元素的机制org.openqa.selenium.By
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文件:
是的,我使用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。