如何在多个浏览器中使用Java进行跨浏览器测试的Selenium测试?
我正在使用Selenium WebDriver和Java & TestNG框架。我想一次只用一个代码就可以使用Firefox,IE,Chrome进行跨浏览器测试。我只能将Firefox初始化为如何在多个浏览器中使用Java进行跨浏览器测试的Selenium测试?
driver = new FirefoxDriver();
但是不能以相同的方式初始化其他浏览器。例如:
driver = new InternetExplorerDriver();
给出了错误InternetExplorerDriver cannot be resolved.
driver = new ChromeDriver();
给出了错误ChromeDriver cannot be resolved.
我怎么能初始化IE和Chrome和执行我的所有需要的浏览器测试?
对于C#
添加
using OpenQA.Selenium.Chrome;
using OpenQA.Selenium.Firefox;
using OpenQA.Selenium.IE;
创建一个配置文件,其中将包含浏览器名称。 实现方法进行交互与配置文件
而且您可以使用下面的代码初始化浏览器:
string browser = GetConfigProperty("browser"); //Get browser name from the config
switch (browser)
{
case "chrome":
driver = new ChromeDriver();
break;
case "firefox":
driver = new FirefoxDriver();
break;
case "InternetExplorer":
driver = new InternetExplorerDriver();
break;
}
好运!
@ alexey.chumagin:如何进行配置?什么是配置的内容? – 2012-08-06 07:00:51
@NazifaChowdhury:根据Java约定,导入将如下所示:import org.openqa.selenium.chrome.ChromeDriver; import org.openqa.selenium.firefox.FirefoxDriver; import org.openqa.selenium.ie.InternetExplorerDriver; – 2012-08-06 07:02:29
@Ripon Al Wasim。您可以创建一个xml文件。并解析它如何任何XML文件。 – 2012-08-06 08:12:37
创建的testng.xml具有以下内容:
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
<suite name="Regression Test" verbose="1">
<test name="Login_IE">
<parameter name="browser" value="iexplore"/>
<classes>
<class name="com.gb.test.selenium.login.Login" />
</classes>
</test>
<test name="Login_FF">
<parameter name="browser" value="firefox"></parameter>
<classes>
<class name="com.gb.test.selenium.login.Login" />
</classes>
</test>
<test name="Login_Chrome">
<parameter name="browser" value="chrome"></parameter>
<classes>
<class name="com.gb.test.selenium.login.Login" />
</classes>
</test>
</suite>
现在如下编写Java代码的webdriver:
@Parameters({"browser"})
@BeforeClass
public void setUp(String browser) {//throws MalformedURLException{
if(browser.equalsIgnoreCase("iexplore")){
File file = new File("E:\\IEDriverServer_Win32_2.29.1\\IEDriverServer.exe");
System.setProperty("webdriver.ie.driver", file.getAbsolutePath());
driver = new InternetExplorerDriver();
}
if(browser.equalsIgnoreCase("firefox")){
driver = new FirefoxDriver();
}
if(browser.equalsIgnoreCase("chrome")){
File file = new File("F:\\chromedriver_win_22_0_1203_0b\\chromedriver.exe");//v22
System.setProperty("webdriver.chrome.driver", file.getAbsolutePath());
driver = new ChromeDriver();
}
jse = (JavascriptExecutor) driver;
driver.manage().window().maximize();
driver.manage().timeouts().implicitlyWait(DEFAULT_IMPLICIT_WAIT_IN_SECONDS, TimeUnit.SECONDS);
driver.get("URLOfSite");
}
对于Java,因为海报问题问了一个Java的答案, I wrote a complete multi-browser parallel window example。
是的,这是好文章。 – 2015-10-06 13:19:02
对于Ruby中,你可以做以下的,如果你想在所有三个浏览器中运行的单码一前一后:
def all_browsers
browsers = [:firefox,:ie,:chrome].each do |br|
$driver = Selenium::WebDriver.for br
$driver.manage.window.maximize
$driver.navigate.to("http://google.com")
end
您正在使用C#或Java? – vidit 2012-08-06 07:40:15
@bemace我正在使用java – 2012-08-08 04:58:57
您使用的是selenium-server-standalone.jar吗?如果不将它添加到你的类路径中,并且你不必添加每个浏览器服务器。 – Tarken 2012-08-22 08:08:54