Selenium Java - 如何外包 @Config 并从外部调用测试 class?
Selenium Java - How to outsource @Config and call tests from an extern class?
我敢肯定,有经验的 Java 开发人员可以很快回答这个问题。但是由于我对 Java 不太熟悉,所以我不知道如何在 Java 中获取 Selenium 的 @Config 部分。如果我可以有一个配置文件或 -class 一方面可以放置数据(浏览器、网站等),另一方面可以放置测试文件,那将是最佳选择。
这是一个测试文件的例子:
package com.example_test.selenium;
import io.ddavison.conductor.Browser;
import io.ddavison.conductor.Config;
import io.ddavison.conductor.Locomotive;
import org.junit.Test;
@Config(
browser = Browser.CHROME,
url = "http://example.com"
)
public class test_a_Home extends Locomotive {
@Test
public void testifExists() {
validatePresent(site_a_Home.EL_NEWCUSTOMERBANNER);
}
}
现在我想要一个名为 tests.java 的单独文件,我可以在其中调用 "test_a_Home" 函数。如果我只用
试试
package com.example_test.selenium;
public class tests {
test_a_Home test = new test_a_Home();
test.testifExists();
}
我收到错误,"testifExists()" 无法解决。
我尝试将 public void testifExists()
更改为 public int testifExists()
并尝试在 class tests
中使用 int res = test.testifExists();
调用它,但这也不起作用,因为我收到错误 java.lang.Exception: Method testNewCustomersBannerExists() should be void
.
如果有人能帮助我,我会很高兴。如果您需要更多信息,请随时提及。谢谢。
如果你希望你的设计是这样的,那么你需要这样组织你的测试:
public class BasePage {
public Locomotive test;
public BasePage(Locomotive baseTest) {
test = baseTest;
}
}
public class test_a_Home extends BasePage {
public test_a_Home(Locomotive baseTest) {
super(baseTest);
}
public void testifExists() {
test.validatePresent(site_a_Home.EL_NEWCUSTOMERBANNER);
}
}
那么你的测试 class,我建议你也创建一个基础 class:
@Config(
browser = Browser.CHROME,
url = "http://example.com"
)
public class BaseTest extends Locomotive {}
然后你的测试class:
public class tests extends BaseTest {
test_a_Home test = new test_a_Home(this);
@Test
public void testHomePage() {
test.testIfExists();
}
}
你也状态:
I don't get how to source out the @Config part of Selenium in Java.
请确保您知道,使用 Conductor 将您从 Selenium API 中抽象出来。它只是包装它。 @Config
不属于Selenium,属于Conductor。
我敢肯定,有经验的 Java 开发人员可以很快回答这个问题。但是由于我对 Java 不太熟悉,所以我不知道如何在 Java 中获取 Selenium 的 @Config 部分。如果我可以有一个配置文件或 -class 一方面可以放置数据(浏览器、网站等),另一方面可以放置测试文件,那将是最佳选择。
这是一个测试文件的例子:
package com.example_test.selenium;
import io.ddavison.conductor.Browser;
import io.ddavison.conductor.Config;
import io.ddavison.conductor.Locomotive;
import org.junit.Test;
@Config(
browser = Browser.CHROME,
url = "http://example.com"
)
public class test_a_Home extends Locomotive {
@Test
public void testifExists() {
validatePresent(site_a_Home.EL_NEWCUSTOMERBANNER);
}
}
现在我想要一个名为 tests.java 的单独文件,我可以在其中调用 "test_a_Home" 函数。如果我只用
试试package com.example_test.selenium;
public class tests {
test_a_Home test = new test_a_Home();
test.testifExists();
}
我收到错误,"testifExists()" 无法解决。
我尝试将 public void testifExists()
更改为 public int testifExists()
并尝试在 class tests
中使用 int res = test.testifExists();
调用它,但这也不起作用,因为我收到错误 java.lang.Exception: Method testNewCustomersBannerExists() should be void
.
如果有人能帮助我,我会很高兴。如果您需要更多信息,请随时提及。谢谢。
如果你希望你的设计是这样的,那么你需要这样组织你的测试:
public class BasePage {
public Locomotive test;
public BasePage(Locomotive baseTest) {
test = baseTest;
}
}
public class test_a_Home extends BasePage {
public test_a_Home(Locomotive baseTest) {
super(baseTest);
}
public void testifExists() {
test.validatePresent(site_a_Home.EL_NEWCUSTOMERBANNER);
}
}
那么你的测试 class,我建议你也创建一个基础 class:
@Config(
browser = Browser.CHROME,
url = "http://example.com"
)
public class BaseTest extends Locomotive {}
然后你的测试class:
public class tests extends BaseTest {
test_a_Home test = new test_a_Home(this);
@Test
public void testHomePage() {
test.testIfExists();
}
}
你也状态:
I don't get how to source out the @Config part of Selenium in Java.
请确保您知道,使用 Conductor 将您从 Selenium API 中抽象出来。它只是包装它。 @Config
不属于Selenium,属于Conductor。