java - 未传递properties.file 中的变量 - TestNG - WebDriver 测试

标签 java testng

我正在使用 Webdriver + TestNG。我创建了一个类,您可以使用您选择的浏览器运行任何测试,只需使用下面的方法,您输入要运行的浏览器以及要运行的测试作为变量。现在我尝试从属性文件中提供“浏览器”变量和“测试”变量。当我运行它时,我只是得到了通行证,但没有任何反应。如果我手动输入变量,它就可以正常工作。为什么它不从属性文件中获取值?如果我进行打印 - 它会打印正确的值...

这是属性文件的内容:

browser="浏览器转到此处"

test="此处进行测试"

这是我运行测试的方法:

@Test
        public void runTest() throws IOException {
            Properties prop = new Properties();
            prop.load(new FileInputStream(
                    "path\\test.properties"));
            localBrowser(prop.getProperty("browser"));
            masterTest(driver, prop.getProperty("test"));
        }
<小时/>

这是我测试的沙箱示例:

如果我将变量放入自己中,浏览器将打开并执行测试。如果我使用属性加载器,它只会打印变量,但不会运行测试。这是一个沙盒示例,您可以尝试一下。

包结构:

-src/test/java
--沙盒测试
-src/测试/资源
--测试.属性

属性文件示例:

浏览器=火狐
测试=测试1

类示例:

公共(public)类SandboxTest {

private WebDriver driver;
InputStream input = null;
Properties prop = new Properties();

@Test
public void runTest() throws FileNotFoundException, IOException {
        input = new FileInputStream(
                (new File(
                    "C:INSERT_PATH_HERE\\test.properties")));
        prop.load(input);
            //This doesnt run the test
        System.out.println(prop.getProperty("browser"));
        System.out.println(prop.getProperty("test"));
        localBrowser(prop.getProperty("browser"));
        masterTest(driver, prop.getProperty("test"));
        /* 
         * This works
                 * localBrowser("firefox");
         * masterTest(driver, "test1");
         */


}

public void localBrowser(String browser) {
    if (browser == "firefox") {
        driver = new FirefoxDriver();
    } else if (browser == "chrome") {
        System.setProperty("webdriver.chrome.driver",
                "C:\\INSERT_PATH_HERE\\chromedriver.exe");
        driver = new ChromeDriver();
    } else if (browser == "ie") {
        System.setProperty("webdriver.ie.driver",
                "C:\\INSERT_PATH_HERE\\IEDriverServer.exe");
        driver = new InternetExplorerDriver(caps);
    }
}

public void masterTest(WebDriver driver, String test) {
    if (test == "test1") {
        Test1(driver);
    } else if (test == "test2") {
        Test2(driver);
    }
}

// *********************************TESTS*****************************************************

public void Test1(WebDriver driver) {
    driver.get("http://www.marca.com/en/");
    driver.findElement(By.linkText("Barcelona")).click();
}

public void Test2(WebDriver driver) {
    driver.get("http://www.marca.com");
    driver.findElement(By.linkText("Fútbol")).click();
}

}

最佳答案

嗯..我真的不确定你在做什么,但如果它不起作用,那么它可能无法正确加载属性文件。

试试这个

Resource resource = new ClassPathResource("/environment.properties");
properties = PropertiesLoaderUtils.loadProperties(resource);

告诉我是否可以,希望有帮助

编辑:

以上是Spring的一部分, 你可以使用

prop.load(new FileInputStream(new File("test.properties")));
  • 请确保 test.properties 位于项目的 src 文件夹下

编辑:

问题不在属性文件中。问题在于您比较 2 个字符串的方式

当你执行browser == "firefox"时,检查是针对对象地址(referenec) 当您比较对象类型时,您需要使用 Eqauls 例如 browser.equals("firefox") 它将以这种方式工作。

因为当你自己输入值时,它会检查引用并且它是相同的..一旦你从属性中获取,这是两个不同的对象,但它们是“相等的”,所以它只能与 Equals 一起使用

关于java - 未传递properties.file 中的变量 - TestNG - WebDriver 测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24048341/

相关文章:

java - 位于 ButtonGroup 中的 JradioButton 要 setSelected

java - TestNG 多次运行所有类方法,初步使用提供的数据执行@BeforeClass

java - 同一类的第一次 @Test 失败后,所有测试都会自动失败

java - 如何针对不同的凭据和应用程序 URL 迭代 testng.xml 文件

在 Linux 中无法识别但在 OSX 中工作的 Java -XstartOnFirstThread 命令行选项

java - 滚动时出现惰性列表适配器问题

java - 如何用java定制allure报告

java - 如何在 eclipse 中以 TestNG 的形式执行 Selenium Webdriver 测试

java - Apache Spark : Effectively using mapPartitions in Java

java - 尝试将 Java 8 项目方面添加到 Eclipse Neon Mac