複数のブラウザーを使用してサイトをテストするために、Testng (.xml ファイルを使用して開始) で Selenium WebDriver を使用しています。
xml ファイルからパラメーターを取得し、IF ステートメントを使用してブラウザーを検出し、関連するドライバーを作成して返すメソッドを作成しようとしています。
私が抱えている問題は、パラメータをメソッドに渡そうとするときです。たとえば、「Chrome」を通過すると、IF ステートメントが正常に動作し、ドライバーが作成されます。ただし、パラメーター自体を使用すると、ドライバーが作成されず、最初に使用したときにテストが失敗します。
私が使用しているセットアップコードは次のとおりです。
@Parameters ({"driver_property_value","driver_property_location","browser"})
@BeforeClass
public void setUp(String driverPropertyValue, String driverPropertyLocation, String browser) throws Exception {
Setup setup = new Setup();
//set properties
System.setProperty(setup.driverPropertyValue(driverPropertyValue),setup.driverPropertyLocation(driverPropertyLocation));
driver = setup.driver(browser);
baseUrl = setup.baseURL();
driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
}
それが呼んでいるものは次のとおりです。
public WebDriver driver(String browser)
{
WebDriver value = null;
if (browser == "chrome")
{
value = new ChromeDriver();
}
return value;
}
テストを実行してパラメーターを渡すために使用しているtestng xmlは次のとおりです。
<!DOCTYPE suite SYSTEM "http://beust.com/testng/testng-1.0.dtd">
<suite name = "testng" verbose="1">
<parameter name="driver_property_value" value="webdriver.chrome.driver"/>
<parameter name="driver_property_location" value="C:/chromedriver.exe"/>
<parameter name="browser" value="chrome"/>
<test name="chrome_tests">
<packages>
<package name="com.LoginPage"/>
</packages>
</test>
最初のセットアップは正常に機能しているように見えますが、パラメーターを使用するときにドライバーの選択が機能していないようです。
ヘルプやアドバイスをいただければ幸いです。
ありがとう
psここに失敗のトレースがありますが、それが役立つかどうかはわかりません.
java.lang.NullPointerException
at com.LoginPage.Login_Logout.setUp(Login_Logout.java:33)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:80)
at org.testng.internal.Invoker.invokeConfigurationMethod(Invoker.java:543)
at org.testng.internal.Invoker.invokeConfigurations(Invoker.java:212)
at org.testng.internal.Invoker.invokeConfigurations(Invoker.java:138)
at org.testng.internal.TestMethodWorker.invokeBeforeClassMethods(TestMethodWorker.java:175)
at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:107)
at org.testng.TestRunner.privateRun(TestRunner.java:753)
at org.testng.TestRunner.run(TestRunner.java:613)
at org.testng.SuiteRunner.runTest(SuiteRunner.java:334)
at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:329)
at org.testng.SuiteRunner.privateRun(SuiteRunner.java:291)
at org.testng.SuiteRunner.run(SuiteRunner.java:240)
at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52)
at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:86)
at org.testng.TestNG.runSuitesSequentially(TestNG.java:1137)
at org.testng.TestNG.runSuitesLocally(TestNG.java:1062)
at org.testng.TestNG.run(TestNG.java:974)
at org.testng.remote.RemoteTestNG.run(RemoteTestNG.java:109)
at org.testng.remote.RemoteTestNG.initAndRun(RemoteTestNG.java:202)
at org.testng.remote.RemoteTestNG.main(RemoteTestNG.java:173)