需要测试/arquillian/drone/石墨烯和绕过arquillian.xml的帮助



让我设置我的测试环境。 我们从命令行在 VM 上运行测试。 从命令行运行测试.xml。 无法通过该参数传递参数。 我们有一个包含所有运行时参数的 test.properties,通过它,我们设置浏览器类型、版本、主页 URL 等。 我们目前正在使用页面对象。

我们有一个函数测试.java所有 pageTests 都继承自它,它解析 test.properties 并为 600 个测试的特定运行设置所有参数。 我想转换为使用Arquillian/Graphene/Drone,但我正在努力在我的环境中设置它。

我不能使用 arquillian.xml因为每次运行都会有所不同,并且我无法为每次运行附加不同的文件。 因此,我相信在我的功能测试中设置系统属性.java对于所有内容。 到目前为止,我已经尝试过:

文件:功能测试.java 包装测试;

import org.jboss.arquillian.drone.api.annotation.Drone;
import org.jboss.arquillian.testng.Arquillian;
import org.openqa.selenium.WebDriver;
import org.testng.annotations.BeforeSuite;
import framework.Log;
import framework.Utility;
/**
* FunctionalTest class contains the setup methods and these will run before or after the suite or test methods.
*
**/
public class FunctionalTest extends Arquillian
{
@Drone
public WebDriver wDriver;
public static Properties pTestProperties = new Properties();
public static String sBrowser = "";
public static String sBrowserVersion = "";
public static String sEnvironment = "";
@BeforeSuite
public static void StartSuite()
{
pTestProperties = Utility.ReadPropertiesFile("test.properties", pTestProperties);
pTestProperties = Utility.ReadPropertiesFile("testEnvironment.properties", pTestProperties);
sEnvironment = (System.getenv("ENVIRONMENT_NAME") != null) ? System.getenv("ENVIRONMENT_NAME") : pTestProperties.getProperty("environment");
sBrowser = (Utility.GetTestParameterString("browser") != "") ? Utility.GetTestParameterString("browser") : pTestProperties.getProperty("browser");
sBrowserVersion = (Utility.GetTestParameterString("browserVersion") != "") ? Utility.GetTestParameterString("browserVersion") : pTestProperties.getProperty("browserVersion");
System.setProperty("webdriver.browser", sBrowser);
System.setProperty("webdriver.chrome.driver", "\drivers\chromedriver_2.38_Win32.exe");
}
}

文件:首页测试.java 包装测试;

import org.jboss.arquillian.container.test.api.RunAsClient;
import org.jboss.arquillian.testng.Arquillian;
import org.testng.Assert;
import org.testng.annotations.Test;
import framework.Log;
import pageobjects.HomePage;
@RunAsClient
public class HomePageTest extends FunctionalTest
{
@Test(dataProvider = Arquillian.ARQUILLIAN_DATA_PROVIDER)
public void OpenUrlTest()
{
String sUrl = "";
HomePage oHomePage = null;
sUrl = pTestProperties.getProperty("testUrl." + sEnvironment + "." + sTestCaseName) != null ? pTestProperties.getProperty("testUrl." + sEnvironment + "." + sTestCaseName) : pTestProperties.getProperty("testUrl." + sEnvironment + "." + sCountry);
System.setProperty("webdriver.remoteAddress", sUrl);
oHomePage = new HomePage(wDriver);
wDriver.get(sUrl);
Assert.assertTrue(oHomePage.IsLoaded());
Log.Info("Passed");
}
}

文件:首页.java 包页面对象;

import java.util.concurrent.TimeUnit;
import org.jboss.arquillian.graphene.Graphene;
import org.openqa.selenium.StaleElementReferenceException;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.support.FindBy;
import framework.Log;
public class HomePage
{
private final WebDriver driver;
public HomePage(WebDriver driver)
{
this.driver = driver;
}
@FindBy(id = "hero-carousel")
private WebElement homepageCarousel;
public boolean IsLoaded()
{
Log.Info("Entering method HomePage::IsLoaded()");
boolean bFlag = false;
try
{
Graphene.waitGui().withMessage("Carousel not shown on HomePage").ignoring(StaleElementReferenceException.class)
.pollingEvery(1, TimeUnit.SECONDS).until().element(homepageCarousel).is().visible();
bFlag = true;
}
catch (Exception e)
{
Log.Info("Execption thrown: " + e.getMessage());
bFlag = false;
}
Log.Info("Exiting the method HomePage::IsLoaded() with return value: '" + bFlag + "'");
return bFlag;
}
}

运行 OpenUrlTest 会产生"缺少 arquillian.xml"错误。 如果我输入一个arquillian.xml,我所做的任何事情都不会覆盖浏览器类型。 有什么帮助吗?

格雷格

您可以在 arquillian.xml 中使用系统属性。

例如:

<extension qualifier="webdriver">
<property name="browser">${browser}</property>
</extension>

通过命令行,您可以传递-Dbrowser=chrome

您可以忽略 arquiillian xml 属性并在运行时设置 arquiillian 属性

System.setProperty("arq.extension.webdriver.browser", "chrome");

最新更新