我正在使用 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/