如何有效地更改WebDriver对象的浏览器名称?

时间:2017-09-21 09:48:51

标签: java selenium webdriver

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

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

这将返回一个String,表示driver对象使用的Web浏览器。但是,对于我的Opera WebDriver对象,这将为我提供String' chrome'。我试过通过明确地将浏览器名称设置为' opera'来改变它。使用DesiredCapabilities:

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

不幸的是,这并不能解决我的问题。如何有效地更改Web浏览器名称?

2 个答案:

答案 0 :(得分: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链接

来识别其他浏览器初始化

答案 1 :(得分:0)

不幸的是,您无法更改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();

}

}

=======