如何在java webdriver中使用线程运行两个firefox实例

时间:2013-05-24 19:55:07

标签: java multithreading webdriver

我是一名基本的java用户,目前我正在尝试创建一个测试我的电子邮件功能的自动化测试用例。所以我的想法是:

  1. 在java中使用selenium webdriver,程序会创建一个启动浏览器,转到谷歌电子邮件,创建测试电子邮件并将其发送到我的雅虎电子邮件帐户的线程。之后,它会无限期地睡眠,直到收到消息或信号发送另一封电子邮件。
  2. 当这样做的时候,正在创建另一个线程来访问雅虎电子邮件帐户并监控新收到的电子邮件。收到电子邮件后,会向第一个线程发送一条消息或信号以发送另一封电子邮件。
  3. 整个过程将重复两次,因此在gmail和yahoo电子邮件之间会有三封电子邮件交换。
  4. 到目前为止,代码就是这样。我不确定如何从这里进步。更具体地说,我不知道如何在那里添加线程,以便两个实例同时运行。

    import static org.junit.Assert.fail;
    
    import org.junit.After;
    import org.junit.Before;
    import org.junit.Test;
    import org.openqa.selenium.*;
    import org.openqa.selenium.firefox.FirefoxDriver;
    
    import java.util.concurrent.TimeUnit;
    
    public class multi_test {
    
        public WebDriver driver1;
        protected WebDriver driver2;
        public String baseUrl1;
        public String baseUrl2;
        protected StringBuffer verificationErrors = new StringBuffer();
    
        public class setup1 implements Runnable{
            public void run(){
                driver1.get(baseUrl1);
            }
        }
    
        public class setup2 implements Runnable{
            public void run(){
                driver2.get(baseUrl2);
            }
        }
        @Before
        public void setUp() throws Exception {
            driver1 = new FirefoxDriver();
            baseUrl1 = "http://www.yahoo.com";
            driver1.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
            System.out.println(driver1);
            driver2 = new FirefoxDriver();
            baseUrl2 = "https://google.com";
            driver2.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
        }
    
        @Test
        public void testing1() throws Exception {
            driver1.get(baseUrl1);
        }
    
        @After
        public void tearDown() throws Exception {
            //driver1.quit();
            //driver2.quit();
            String verificationErrorString = verificationErrors.toString();
            if (!"".equals(verificationErrorString)) {
                fail(verificationErrorString);
            }
        }
    }
    

1 个答案:

答案 0 :(得分:0)

为什么要使用线程? 不是更好准备两个测试?发送和接收? 一个发送邮件 - 通过?好的,我们可以继续下一个 接收方将等待一封电子邮件,在下一个XX分钟内检查间隔例如30?

你可以在TestNG中运行它重复3次吗?

顺便说一下。好帖子为什么不自动化gmail:)))

https://groups.google.com/d/msg/selenium-users/8jR6Fw5ndxU/7peVDuzkNN4J