如何在Java中使用SeleniumWebDriver获取浏览器名称?
我有一个测试用例,需要根据浏览器名称执行,即IE或Chrome。在本测试用例中,某些零件将取决于浏览器类型如何在Java中使用SeleniumWebDriver获取浏览器名称?,java,selenium-webdriver,Java,Selenium Webdriver,我有一个测试用例,需要根据浏览器名称执行,即IE或Chrome。在本测试用例中,某些零件将取决于浏览器类型 如何在执行期间获取浏览器名称?例如,如果是IE,我需要传递数据。如果是Chrome浏览器,我需要选择数据 您是测试人员,因此您可以编写代码/脚本来明确地测试各种浏览器/版本组合及其各种细微差别和微妙之处(同时尽量重用逻辑,尽量减少重复等) WebDriver的本质是,测试人员是您,而不是浏览器。不要试着去发现东西 因此,考虑到IE和Chrome的行为不同,您应该明确地为每个(在不同的@Te
如何在执行期间获取浏览器名称?例如,如果是IE,我需要传递数据。如果是Chrome浏览器,我需要选择数据 您是测试人员,因此您可以编写代码/脚本来明确地测试各种浏览器/版本组合及其各种细微差别和微妙之处(同时尽量重用逻辑,尽量减少重复等) WebDriver的本质是,测试人员是您,而不是浏览器。不要试着去发现东西 因此,考虑到IE和Chrome的行为不同,您应该明确地为每个(在不同的
@Test
中)创建一个WebDriver
实例,并根据需要设置所需的数据(同样地,属性、功能
等)
无论如何,在测试之间共享通用的查找代码,但是在您的测试变得健壮和正常工作之前,您不应该尝试重构它们。您是测试人员,因此您可以编写代码/脚本来显式地测试各种浏览器/版本组合及其各种细微差别和微妙之处(同时尽量重用逻辑,尽量减少重复等) WebDriver的本质是,您,即测试人员,正在进行驱动,而不是浏览器。不要试图检测事物 因此,考虑到IE和Chrome的行为不同,您应该明确地为每个(在不同的
@Test
中)创建一个WebDriver
实例,并根据需要设置所需的数据(同样地,属性、功能
等)
请务必在测试之间共享通用的查找代码,但在您的测试运行良好之前,您不应尝试重构它们。您可以使用以下代码了解浏览器名称、版本和操作系统详细信息:-
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;
或
希望它能帮助您:)您可以使用以下代码了解浏览器名称、版本和操作系统详细信息:-
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;
或
希望它能帮助您:)在Python中,您可以访问
驱动程序
driver.capabilities['browserName']
在Python中,您可以像这样访问驱动程序
driver.capabilities['browserName']
要检索浏览器名称、浏览器版本和平台名称,可以使用以下方法之一:
- 直接使用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();
}
}
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();
}
}
- 使用Capabilities对象和
getCapability()
方法:
- 代码块:
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();
}
}
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();
}
}
要检索浏览器名称、浏览器版本和平台名称,可以使用以下方法之一:
- 直接使用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();
}
}
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();
}
}
- 使用Capabilities对象和
getCapability()
方法:
- 代码块:
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();
}
}
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();
}
}
对于使用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();
}
对于使用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();
}
如果OP有(一个或多个)驱动程序
实例,为什么他们需要代码来计算名称,这样他们才能打开它?实例将首先从何而来?OP可以在需要了解版本和浏览器的测试用例上使用此代码。OP可以更改驱动程序实例名称。我只是回答了OP的任何要求。这对我来说没有意义,但这是OP的选择。如何使用EventFiringWebDriver(c#)获取浏览器详细信息?我在尝试将EventFiringWebDriver强制转换为RemoteWebDriver时遇到“无效强制转换”异常。如果OP有(一个或多个)驱动程序
实例,为什么他们需要代码来计算名称,这样才可以打开它?实例将首先从何而来?OP可以在需要了解版本和浏览器的测试用例上使用此代码。OP可以更改驱动程序实例名称。我只是回答了OP的任何要求。这对我来说没有意义,但这是OP的选择。如何使用EventFiringWebDriver(c#)获取浏览器详细信息?我在尝试将EventFiringWebDriver强制转换为RemoteWebDriver时遇到“无效强制转换”异常您为dict写了错误的名称:它名为driver.capabilities[“name\u of_attribute”]
如果使用复数形式,效果很好。您为dict写了错误的名称:它名为driver.capabilities[“name\u of_of_attribute”]
如果你使用复数形式,效果会很好。虽然你有一个观点,但在某些情况下,如果测试自动适应不同的浏览器,效果会更好。例如:测试通常针对不同的浏览器手动运行(半手动);或者一个浏览器在与某些元素交互时需要解决Selenium bug。在这些情况下,您不需要单独的测试,您需要一个跨浏览器的测试。不同的浏览器需要对代码进行轻微调整,并且检测正在使用的浏览器可以使您的代码更加智能。例如,目前Safari需要通过javascript执行大多数点击,因此检测是否是Safari并通过selenium扩展改变点击的执行方式是明智的方法。有些浏览器处理窗口切换的方式与今天的略有不同,因此还需要基于浏览器类型的逻辑。虽然你有一个观点,但在有些情况下,如果测试自动适应不同的浏览器会更好。例如:测试通常是针对不同的对象手动(半)运行的