0
我试图自动化一个Web应用程序进行多个浏览器测试。我正在尝试整合一些春季特色,但发现一些难题。这里是我的代码:获取错误 - java.lang.ClassCastException:org.openqa.selenium.chrome.ChromeDriver无法转换为com.initialization.DriverInitialization
在DriverInitialize.java:
package com.initialization;
import org.openqa.selenium.WebDriver;
public class DriverInitialization {
private WebDriver webDriver;
public void setWebDriver(WebDriver webDriver) {
this.webDriver = webDriver;
}
public WebDriver getWebDriver() {
return webDriver;
}
}
在Start.java
package com.initialization;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.Properties;
public class Start {
public static Properties properties;
public static void loadProperties() {
properties = new Properties();
try {
properties.load(new FileReader("src/com/properties/driver.properties"));
properties.load(new FileReader("src/com/properties/driverpath.properties"));
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static Properties getAllProperties() {
return properties;
}
public static String getProperty(String property) {
return properties.getProperty(property);
}
}
在BrowserTest.java:
package com.tests;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.testng.annotations.AfterClass;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Parameters;
import org.testng.annotations.Test;
import com.initialization.DriverInitialization;
import com.initialization.Start;
public class BrowserTest {
private ApplicationContext context;
private DriverInitialization driverInit;
@Parameters("browser")
@BeforeClass
public void beforeClass(String browser) {
System.out.println("Browser : " + browser);
Start.loadProperties();
System.setProperty(Start.getProperty("driver." + browser), Start.getProperty("driverpath." + browser));
System.out.println(Start.getAllProperties());
context = new ClassPathXmlApplicationContext("com/driversetup/driversetup.xml");
driverInit = (DriverInitialization) context.getBean(browser);
}
@Test
public void test() {
System.out.println(driverInit.getWebDriver());
}
@AfterClass
public void AfterClass() {
System.out.println("After Class ....");
}
}
在driversetup.xml:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-4.3.xsd">
<bean id="chrome" class="org.openqa.selenium.chrome.ChromeDriver" lazy-init="true"/>
<bean id="firefox" class="org.openqa.selenium.firefox.FirefoxDriver" lazy-init="true" />
<bean id="ie" class="org.openqa.selenium.ie.InternetExplorerDriver" lazy-init="true" />
</beans>
在startup.xml:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="Suite" parallel="none">
<test name="ChromeTest">
<parameter name="browser" value="chrome" />
<classes>
<class name="com.tests.BrowserTest" />
</classes>
</test>
</suite>
在driverpath.properties:
driverpath.chrome=drivers/chromedriver.exe
driverpath.firefox=drivers/geckodriver.exe
driverpath.ie=drivers/IEDriverServer.exe
在driver.properties:
driver.chrome=webdriver.chrome.driver
driver.firefox=webdriver.gecko.driver
driver.ie=webdriver.ie.driver
当我执行这个从startup.xml我得到的TestNG报告中的错误:
java.lang.ClassCastException: org.openqa.selenium.chrome.ChromeDriver cannot be cast to com.initialization.DriverInitialization
at com.tests.BrowserTest.beforeClass(BrowserTest.java:26)
... Removed 25 stack frames
我想:driverInit =新DriverInitialization(); driverInit.setWebDriver(context.getBean(browser)); :它的工作。 –