如何在Java中执行Selenium测试

时间:2013-08-28 15:51:14

标签: java eclipse selenium

所以我使用 Selenium IDE 为我想要完成的某些自动化创建测试用例。我希望能够为这种情况创建一些循环/流量控制,所以我想我需要将它从Selenium IDE导出到像Java这样的东西(我最熟悉Java)。我导出到 Java / JUnit4 / Web Driver 。我认为尝试通过 Eclipse 执行java文件会效果最好,但如果有人知道更容易的事情,请告诉我。无论如何,我发现如何通过Eclipse执行这个Java没有好的解释。

我读过的大多数内容都告诉我要确保我的Build Path库包含 Selenium Standalone Server 。事实上,我读过的所有内容都告诉我使用Selenium遥控器。但是,我认为RC是折旧的,我想知道是否有任何方法可以使它与我从Selenium下载的最近的Web Driver一起工作。另外,我读过的大多数内容告诉我,我需要使用 public static void main(),这有点尴尬,因为我不知道如何改变导出的selenium给我的代码(显然我不能只在主方法中粘贴它。)

如果有人可以指导我从Selenium出口到Java执行代码,我将永远为您负债。

代码Selenium给了我: package com.example.tests;

package com.rackspace;

import java.util.concurrent.TimeUnit;

import org.openqa.selenium.Alert;
import org.openqa.selenium.By;
import org.openqa.selenium.NoAlertPresentException;
import org.openqa.selenium.NoSuchElementException;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.support.ui.Select;

public class RackspaceContactAutomation {
   private WebDriver driver;
   private String baseUrl;
   private boolean acceptNextAlert = true;
   private StringBuffer verificationErrors = new StringBuffer();

   @Before
   public void setUp() throws Exception {
      driver = new FirefoxDriver();
      baseUrl = "https://cp.rackspace.com/Exchange/Mail/Contacts/List.aspx?selectedDomain=blahblahblah.com";
      driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
   }

   @Test
   public void testContactAutomationJava() throws Exception {
      driver.get(baseUrl + "/Exchange/Mail/Contacts/List.aspx?selectedDomain=blahblahblah.com");
      driver.findElement(By.linkText("Mr. Man")).click();
      driver.findElement(By.linkText("Contact Information")).click();
      new Select(driver.findElement(By.id("PhoneNumberType"))).selectByVisibleText("Mobile");
      driver.findElement(By.id("MobilePhone")).sendKeys("999-999-9999");
      new Select(driver.findElement(By.id("PhoneNumberType"))).selectByVisibleText("Fax");
      driver.findElement(By.id("Fax")).sendKeys("999-999-9999");
      driver.findElement(By.cssSelector("button.primary")).click();
   }

   @After
   public void tearDown() throws Exception {
      driver.quit();
      String verificationErrorString = verificationErrors.toString();
      if (!"".equals(verificationErrorString)) {
         fail(verificationErrorString);
      }
   }

   private boolean isElementPresent(By by) {
      try {
         driver.findElement(by);
         return true;
      } catch (NoSuchElementException e) {
         return false;
      }
   }

   private boolean isAlertPresent() {
      try {
         driver.switchTo().alert();
         return true;
      } catch (NoAlertPresentException e) {
         return false;
      }
   }

   private String closeAlertAndGetItsText() {
      try {
         Alert alert = driver.switchTo().alert();
         String alertText = alert.getText();
         if (acceptNextAlert) {
            alert.accept();
         } else {
            alert.dismiss();
         }
         return alertText;
      } finally {
         acceptNextAlert = true;
      }
   }
}

这给了我4个错误(3个用于注释,我可以删除,1个用于fail方法中的tearDown()。这不是我非常关心的错误我是否让这段代码真正执行?

谢谢!

3 个答案:

答案 0 :(得分:14)

在Eclipse中运行Selenium Java代码的一个好方法是将它们作为 JUnit测试运行。

 1.在Eclipse中创建Maven项目。
如果您之前没有这样做,请参阅:

 2.将以下依赖项添加到pom.xml文件中:

<dependency>
    <groupId>junit</groupId>
    <artifactId>junit</artifactId>
    <version>4.7</version>
    <scope>test</scope>
</dependency>    
<dependency>
        <groupId>org.seleniumhq.selenium</groupId>
        <artifactId>selenium-java</artifactId>
        <version>2.25.0</version>           
</dependency>    
<dependency>
    <groupId>org.seleniumhq.selenium</groupId>
    <artifactId>selenium-firefox-driver</artifactId>
    <version>2.33.0</version>
</dependency> 
<dependency><groupId>org.seleniumhq.selenium</groupId>
    <artifactId>selenium-server</artifactId>
    <version>2.25.0</version>    
</dependency>

 3.将导出的Java文件复制到Maven项目中。

 4.将以下导入添加到文件中:

import static org.junit.Assert.*;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;

 5.将Java文件作为JUnit测试运行,如下所示:

Example from my Eclipse (Version is Kepler)

答案 1 :(得分:1)

之前的答案都是合法的。但是要直接从你的eclipse运行,你需要对你的代码进行一些修改。你不需要public void main来运行junit代码。以下是让您只需复制代码并将其粘贴到eclipse中并以JUnit测试运行的步骤:

  1. 在eclipse中安装JUnit-&gt;帮助 - &gt; eclipse市场 - &gt;搜索JUnit并安装它,重新启动eclipse。

  2. 在eclipse中创建一个项目和一个新包,然后创建一个与selenium IDE导出代码同名的新类,删除除包行以外的所有内容。

  3. 将代码从selenium IDE复制并粘贴到该类,删除包行。

  4. 右键单击代码区域并以JUnit测试运行。

答案 2 :(得分:-1)

我将硒转换为j单元测试的答案非常简单。

首先你需要在透视工作台中设置代码,在工具栏中单击使用编辑器&gt;转到&gt;中显示,然后按下其中一个编辑器&gt;你看到Java编辑器或窗口编辑器等,这将转换你的代码。然后按返回课程并突出显示它,右键单击鼠标 并将其作为Java应用程序运行。你应该能够看到你的设计/和源代码。再问题