【问题标题】:How to effectively change the browser name of the WebDriver object?如何有效更改 WebDriver 对象的浏览器名称?
【发布时间】:2017-09-21 20:17:39
【问题描述】:

我打算通过在多个 Web 浏览器中使用 selenium 来执行一些测试。为了区分不同的 Web 驱动程序,我使用以下代码行:

((RemoteWebDriver) driver).getCapabilities().getBrowserName();

这将返回一个字符串,指示 driver 对象使用的 Web 浏览器。但是,对于我的 Opera WebDriver 对象,这会给我字符串“chrome”。我尝试通过使用 DesiredCapabilities 将浏览器名称显式设置为“opera”来更改此设置:

DesiredCapabilities capabilities = new DesiredCapabilities();
capabilities.setBrowserName("opera");
WebDriver driver = new OperaDriver(capabilities);

很遗憾,这并不能解决我的问题。如何有效地更改网络浏览器名称?

【问题讨论】:

  • 你不能这样做。它由特定浏览器的驱动程序设置,您的代码无法写入。所以你需要一些其他的方式来存储这些信息并调用它
  • 我认为@TarunLalwani 是对的
  • 我确实必须以另一种方式存储它。谢谢!
  • 你能用你的确切代码更新问题吗?我很感兴趣你在哪个阶段打电话给getCapabilities().getBrowserName();
  • 另见 Webdriver 的 Github 和第 1459 期,Method to change User Agent string

标签: java selenium webdriver


【解决方案1】:

如果我是对的,您的基本要求是识别浏览器初始化,这可以通过使用 JavascriptExecutor 从浏览器获取用户代理来完成,如下所示:

String userAgent = (String) ((JavascriptExecutor) driver).executeScript("return navigator.userAgent;");

//following is for identifying opera browser initialization 
if(userAgent.contains("OPR/"){

  System.out.println("Browser currently in use is Opera");

}

同样你可以通过引用this链接来识别其他浏览器初始化

【讨论】:

  • 这确实是我的要求。我已经通过将信息存储在其他地方解决了这个问题,但出于好奇测试了您的解决方案。它有效,但我认为我目前的解决方案更合适。不过还是谢谢!
【解决方案2】:

很遗憾,您无法更改 BrowserName。

您可以尝试创建专门处理多个浏览器的函数:-

package multiBrowser;
import org.testng.annotations.Test;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.firefox.FirefoxProfile;
import org.openqa.selenium.firefox.internal.ProfilesIni;
import org.openqa.selenium.ie.InternetExplorerDriver;
import org.openqa.selenium.opera.OperaDriver;
import org.testng.annotations.Parameters;



public class MultiBrowserClass {
WebDriver driver;
@Test
@Parameters("browser")
public void multiBrowsers(String browserName) throws InterruptedException{
    if(browserName.equalsIgnoreCase("firefox")){
        System.setProperty("webdriver.firefox.marionette","D:\\My Work\\Setup\\JAR\\geckodriver.exe");
        ProfilesIni profile = new ProfilesIni();    
        FirefoxProfile myprofile = profile.getProfile("default");
        driver = new FirefoxDriver(myprofile);

    }
    if(browserName.equalsIgnoreCase("chrome")){

        System.setProperty("webdriver.chrome.driver", "D:\\My Work\\Setup\\JAR\\driver\\chromedriver.exe");
        driver = new ChromeDriver();
    }
    else if(browserName.equalsIgnoreCase("IE")){

        System.setProperty("webdriver.ie.driver", "D:\\My Work\\Setup\\JAR\\driver\\IEDriverServer.exe");
        driver = new InternetExplorerDriver();
    }
    else if(browserName.equalsIgnoreCase("opera")){

        System.setProperty("webdriver.opera.driver", "D:\\My Work\\Setup\\JAR\\driver\\operadriver.exe");
        driver = new OperaDriver(); 

    }

    driver.manage().window().maximize();

    driver.navigate().to("https://");

    System.out.println(driver.getTitle());

    driver.findElement(By.xpath("//div[@id='navbar-main']/ul/li[5]/a")).click();    
    driver.findElement(By.xpath("//div[@id='navbar-main']/ul/li[5]/ul/li/a")).click();
    Thread.sleep(3000);
    driver.findElement(By.name("email")).clear();
    driver.findElement(By.name("email")).sendKeys("abc@mm.kk");
    driver.findElement(By.name("password")).clear();
    driver.findElement(By.name("password")).sendKeys("1qaz2wsx");
    Thread.sleep(3000);
    driver.findElement(By.xpath("//form[@id='loginform']/div[8]/button")).click();
    Thread.sleep(5000);

    if(driver.getPageSource().contains("Welcome abc@mm.kk")){
        System.out.println("User Successfully logged in");

    }else{
        System.out.println("Username or password you entered is incorrect");
    }

    driver.quit();

}

}

=======

【讨论】:

  • 感谢您的反应,但这并不能回答我的问题。我已经有了初始化不同 WebDriver 对象的功能,我只是想在它们被初始化后能够区分它们。
猜你喜欢
  • 2012-01-30
  • 1970-01-01
  • 2012-11-20
  • 1970-01-01
  • 1970-01-01
  • 2019-04-30
  • 1970-01-01
  • 2014-10-15
  • 2018-01-18
相关资源
最近更新 更多