Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/359.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Java中使用SeleniumWebDriver获取浏览器名称?_Java_Selenium Webdriver - Fatal编程技术网

如何在Java中使用SeleniumWebDriver获取浏览器名称?

如何在Java中使用SeleniumWebDriver获取浏览器名称?,java,selenium-webdriver,Java,Selenium Webdriver,我有一个测试用例,需要根据浏览器名称执行,即IE或Chrome。在本测试用例中,某些零件将取决于浏览器类型 如何在执行期间获取浏览器名称?例如,如果是IE,我需要传递数据。如果是Chrome浏览器,我需要选择数据 您是测试人员,因此您可以编写代码/脚本来明确地测试各种浏览器/版本组合及其各种细微差别和微妙之处(同时尽量重用逻辑,尽量减少重复等) WebDriver的本质是,测试人员是您,而不是浏览器。不要试着去发现东西 因此,考虑到IE和Chrome的行为不同,您应该明确地为每个(在不同的@Te

我有一个测试用例,需要根据浏览器名称执行,即IE或Chrome。在本测试用例中,某些零件将取决于浏览器类型


如何在执行期间获取浏览器名称?例如,如果是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扩展改变点击的执行方式是明智的方法。有些浏览器处理窗口切换的方式与今天的略有不同,因此还需要基于浏览器类型的逻辑。虽然你有一个观点,但在有些情况下,如果测试自动适应不同的浏览器会更好。例如:测试通常是针对不同的对象手动(半)运行的