【问题标题】:Selenium grid with Java - user input带有 Java 的 Selenium 网格 - 用户输入
【发布时间】:2016-07-20 09:50:17
【问题描述】:

我正在使用 Java 和 Selenium Grid 和 JUnit 框架编写自动测试,但我遇到了用户输入问题。所以我的代码如下所示:

package com.example.tests;

import com.thoughtworks.selenium.DefaultSelenium;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;

import java.util.Scanner;

import static org.junit.Assert.fail;
import static org.testng.Assert.assertEquals;
import static org.testng.Assert.assertTrue;


public class test {
    private DefaultSelenium selenium;

    @Before
    public void setUp() throws Exception {
        selenium = new DefaultSelenium("localhost", 5555, "*googlechrome", "www.google.com");
        selenium.start();
    }

    @Test
    public void Test() throws Exception {
    // some tests here
    }

    @After
    public void tearDown() throws Exception {
        selenium.stop();
    }

我想添加一个用户输入,所以当用户输入例如“Google Chrome”时,测试将从 Google Chrome 开始,当他输入“Firefox”时,测试将从 Firefox 等开始。我试过放

Scanner in = new Scanner(System.in);
String web_browser = in.next();

在我的代码中某处(例如在 setUp 方法中),但是当程序启动时,我无法在控制台中输入任何内容。有谁知道这个的解决方案吗?

【问题讨论】:

  • 您究竟为什么想要一个需要手动控制的自动化测试?如果您只是想自动化某些任务,则不应对其进行单元测试,只需创建一个 POJO 来运行您需要的任务并根据您要运行的任务为其提供参数。
  • @t0mppa 是的,但我想用不同的浏览器并行运行相同的测试
  • 我仍然认为将手动工作放在中间是错误的方式,因为我们正在谈论自动化测试。您可以让您的测试套件启动多个浏览器,而无需您以任何方式亲自与之交互。

标签: java selenium junit user-input remote-control


【解决方案1】:

在测试中处理 System.in 很棘手。

我建议您将驱动程序偏好作为系统属性阅读?

String driver = System.getProperty("driver");
if (driver != null) {
  //use that driver
}
else {
  //use default driver
}

你可以像这样启动你的测试

mvn test -Ddriver=chrome

或通过在您的 IDE 中设置它们

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-23
    • 1970-01-01
    • 1970-01-01
    • 2023-03-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多