我有一个测试用例,需要根据浏览器名称执行,即IE或Chrome。在此测试用例中,某些部分将取决于浏览器类型。
如何在执行之间获取浏览器名称?例如,如果它是IE,我需要传递数据。如果是Chrome浏览器,我需要选择数据。
答案 0 :(得分:24)
您可以使用以下代码了解浏览器名称,版本和操作系统详细信息: -
Capabilities cap = ((RemoteWebDriver) driver).getCapabilities();
String browserName = cap.getBrowserName().toLowerCase();
System.out.println(browserName);
String os = cap.getPlatform().toString();
System.out.println(os);
String v = cap.getVersion().toString();
System.out.println(v);
您需要导入的包
import org.openqa.selenium.Capabilities;
import org.openqa.selenium.remote.RemoteWebDriver;
希望它会对你有所帮助:)。
答案 1 :(得分:3)
在Python中,您可以像这样访问driver.capabilities
dict
driver.capabilities['browserName']
https://groups.google.com/forum/#!topic/selenium-users/nbSujBSc6q8
答案 2 :(得分:2)
要检索浏览器名称,浏览器版本和平台名称,可以使用以下两种方法之一:
直接使用API:
代码块:
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.remote.RemoteWebDriver;
public class browserCapabilitiesRetrieve {
public static void main(String[] args) {
// initial configuration
System.out.println("Browser Name is : "+((RemoteWebDriver) driver).getCapabilities().getBrowserName().toLowerCase());
System.out.println("Browser Version is : "+((RemoteWebDriver) driver).getCapabilities().getVersion().toString());
System.out.println("Platform Name is : "+((RemoteWebDriver) driver).getCapabilities().getPlatform().toString());
driver.quit();
}
}
使用 Capabilities 对象和getCapability()
方法:
代码块:
import org.openqa.selenium.Capabilities;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.remote.RemoteWebDriver;
public class FirefoxBrowserCapabilitiesRetrieve_getCapability {
public static void main(String[] args) {
// initial configuration
Capabilities cap = ((RemoteWebDriver) driver).getCapabilities();
System.out.println("Browser Name is : "+cap.getBrowserName());
System.out.println("Browser version is : "+cap.getVersion());
System.out.println("Platform is : "+cap.getPlatform().toString());
driver.quit();
}
}
答案 3 :(得分:1)
您是测试人员,因此您可以编写代码/脚本来明确测试各种浏览器/版本组合及其各种细微差别和细微之处(同时尝试重复使用尽可能的逻辑,尽量减少重复等。)
WebDriver的本质是,你,测试人员正在开车 - 而不是浏览器。不要试图发现事情。
因此,对于IE和Chrome,您有不同的行为,您应该为每个(在不同的WebDriver
中)明确创建一个@Test
实例并设置所需的数据(同样属性,{ {1}}等。视情况而定。
通过各种方式在测试之间共享公共查找代码,但是在测试稳健并且工作之前,您不应该尝试重构它们。
答案 4 :(得分:0)
对于使用C#的用户,可以在使用本地浏览器驱动程序或remotewebdriver时执行以下操作来检测浏览器:
public static bool IsSafari(IWebDriver driver)
{
// Using remotewebdriver e.g. browserstack
if (SomeConfig.UsingRemoteWebDriver)
return GetRemoteDriverBrowserName(driver) == "safari";
// Using local browser driver
return driver.GetType() == typeof(SafariDriver);
}
public static bool IsInternetExplorer(IWebDriver driver)
{
// Using remotewebdriver e.g. browserstack
if (SomeConfig.UsingRemoteWebDriver)
return GetRemoteDriverBrowserName(driver) == "internet explorer";
// Using local browser driver
return driver.GetType() == typeof(InternetExplorerDriver);
}
private static string GetRemoteDriverBrowserName(IWebDriver driver)
{
return ((RemoteWebDriver)driver).Capabilities.GetCapability("browserName").ToString().ToLower();
}